模仿Github设计的博客网站的API

作业题目

模仿 Github,设计一个博客网站的 API

博客网站

设计得博客可通过:https://api.firstblog.com进行访问。

API设计基本原则

网站使用HTTPS协议,引用了大量属于HTTPS需要的请求赋于语义的方法,具体内容如下:

  • GET 检索位于指定 URI 处的资源的表示形式。响应消息的正文包含所请求资源的详细信息。成功的 GET 方法通常返回 HTTP 状态代码 200(正常)。 如果找不到资源,该方法应返回 404(未找到)。
  • POST 在指定的 URI 处创建新资源。请求消息的正文将提供新资源的详细信息。请注意,POST 还用于触发不实际创建资源的操作。如果 POST 方法创建了新资源,则会返回 HTTP 状态代码 201(已创建)。新资源的 URI 包含在响应的Location 标头中。响应正文包含资源的表示形式。如果该方法执行了一些处理但未创建新资源,则可以返回 HTTP 状态代码 200,并在响应正文中包含操作结果。 或者,如果没有可返回的结果,该方法可以返回 HTTP 状态代码 204(无内容)但不返回任何响应正文如果客户端将无效数据放入请求,服务器应返回 HTTP 状态代码 400(错误的请求)。 响应正文可以包含有关错误的其他信息,或包含可提供更多详细信息的 URI 链接
  • PUT 在指定的 URI 处创建或替换资源。 请求消息的正文指定要创建或更新的资源。与 POST 方法一样,如果 PUT 方法创建了新资源,则会返回 HTTP 状态代码 201(已创建)。 如果该方法更新了现有资源,则会返回 200(正常)或 204(无内容)。 在某些情况下,可能无法更新现有资源。 在这种情况下,可考虑返回 HTTP 状态代码 409(冲突)。
  • DELETE 删除位于指定 URI 处的资源。如果删除操作成功,Web 服务器应以 HTTP 状态代码 204 做出响应,指示已成功处理该过程,但响应正文不包含其他信息。 如果资源不存在,Web 服务器可以返回 HTTP 404(未找到)。

这里的内容引用自老师课程网站给出的指导网页,如果想要查看更加详细的内容,可以点击网页:https://docs.microsoft.com/zh-cn/azure/architecture/best-practices/api-design

具体使用方式

登陆网站

curl -u username https://api.firstblog.com

会出现相应的密码输入框,输入密码后,如果密码正确,返回状态码200,成功的登入网站。否则就会返回状态码404,表明登陆失败,可能用户不存在或者密码错误。

获取用户所有博客的标题和链接

通过GET请求获取用户拥有的博客基本信息。
请求:GET /username
具体命令如下:
curl -i 'https://api.firstblog.com/username'

查看hello博客的具体内容

通过GET请求获取博客的具体内容
请求:GET /username/hello
具体命令如下:
curl -i 'https://api.firstblog.com/username/hello'

根据关键词搜寻博客

通过GET请求获取相关博客的标题和链接
请求:GET /username/search?key=hello
具体命令如下:
curl -i 'https://api.firstblog.com/username/search?key=hello'

查看hello博客的评论

通过GET请求获取博客评论的具体内容
请求:GET /username/hello/comment
具体命令如下:
curl -i 'https://api.firstblog.com/username/hello/comment'

发布新博客

利用POST命令在服务器新建一个资源,然后上传文章内容和标题以及日期
请求:POST /username/new
具体命令如下:
curl -i 'https://api.firstblog.com/username/new' -d '{"title":"title","content":"content","date":"date"}'

对hello博客进行评论

利用POST命令在服务器新建一个资源,然后上传自身的评论内容
请求:POST /username/hello/comment/new
具体命令如下:
curl -c 'https://api.firstblog.com/username/hello/comment/new'

更新hello博客

利用PUT命令在服务器替换一个资源,需要上传更新后的文章内容和在文章所在页面。
请求:PUT /username/hello/update
具体命令如下:
curl -i 'https://api.firstblog.com/username/hello/update' -d '{"title":"title","content":"content","date":"date"}'

删除hello博客

利用DELETE命令在服务器删除一个资源。
请求如下: DELETE /username/hello/delete
具体命令如下:
curl -i 'https://api.firstblog.com/username/hello/delete'

状态返回代码

具体信息可以查看:https://www.infoq.cn/article/designing-restful-http-apps-roth

下面是几个请求通用的三个状态返回码:

  • 400 ,指代坏请求(如,参数错误)。
  • 404,资源不存在。
  • 406,服务端不支持所需表示。
  • 409,通用冲突。

你可能感兴趣的:(模仿Github设计的博客网站的API)