01 公网ip地址 与 域名
在开发完成后,我们就需要将服务开放给用户。然而通常来说运行在我们自己的计算机上的服务端程序所提供的服务只能供内网上的其他用户所使用,想要将服务提供给更多的用户,则需要一些特别的操作。
公网ip
为了我们的服务可以给公网上的用户使用,我们需要为我们的服务申请一个公网ip。
获取公网ip有两种方案:一是向自己的运行商申请;二是购买云服务器,云服务器自带有公网ip。
后者是更为易行的方案,目前市面上可供选择的云服务有很多,我们可以对比其提供的服务与资费进行选择。例如字节跳动的火山引擎云服务器、腾讯云服务器、华为云服务器、阿里云服务器等等。
域名
由于ip地址并不方便记忆,因此我们还可以为我们的服务申请一个域名。
我们可以在阿里云起航等网站上等申请到我们自己的域名。
02 API接口
客户端或者网页与我们服务端之间通过是某种协议进行交互,例如最常用的http协议。
通过不同的uri,客户端或者网页就可以使用到我们提供的不同的服务。
03 用户认证
用户认证,也称作鉴权。不同的用户有着不同的使用服务的权限。例如视频网站的评论功能就需要用户在成功登录后才能使用,只有vip用户才能观看4k高清视频,每个用户只能查看自己的收藏夹的内容。
有多种方案来实现用户认证,例如session id。session id的原理就是在服务端为每个连接维护一串字符用于区分不同用户。但随着用户的增多,这种方案显然会增加服务端的负担,因此对于用户较多的服务,更为适合使用一种叫做token的方案。
在用户成功注册登录后,服务端会返回一个token(身份令牌)给用户,后续用户使用其它需要特定权限的服务时,需要在请求中附带上这个token来表明自己的身份,服务端会在接收到请求后对token进行解密,从而区分用户。
而JSON Web Token(简称 JWT)是目前较流行的跨域认证解决方案,不少golang的http框架都内置了jwt中间件,方便我们进行用户认证。