restful了解下


关于restful及oAuth2.0

http://www.ruanyifeng.com/blog/2014/05/restful_api.html
http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html

*客户端必须得到用户的授权(authorization grant),才能获得令牌(access token)。OAuth 2.0定义了四种授权方式

  • 授权码模式(authorization code)
  • 简化模式(implicit)
  • 密码模式(resource owner password credentials)
    客户端模式(client credentials)
restful了解下_第1张图片
麻麻我头好晕==运行流程
restful了解下_第2张图片
麻麻我头好晕==授权码模式
restful了解下_第3张图片
sf_remember
restful了解下_第4张图片
sid
restful了解下_第5张图片
segment的token

fiddler下的,比f12详细些,f12抓不到弹出的小窗内容

看一下github登陆segment的授权码模式
restful了解下_第6张图片
https://github.com/session
restful了解下_第7张图片
https://segmentfault.com/user/oauth/github
A:客户端申请认证的URI,包含以下参数:
    response_type:表示授权类型,必选项,此处的值固定为"code"
    client_id:表示客户端的ID,必选项
    redirect_uri:表示重定向URI,可选项
    scope:表示申请的权限范围,可选项
    state:表示客户端的当前状态,可以指定任意值,认证服务器会原封不动地返回这个值。(state项不用动态数据的话会存在CSRF漏洞)
C:  服务器回应客户端的URI,包含以下参数:
code:表示授权码,必选项。该码的有效期应该很短,通常设为10分钟,客户端只能使用该码一次,否则会被授权服务器拒绝。该码与客户端ID和重定向URI,是一一对应关系。
state:如果客户端的请求中包含这个参数,认证服务器的回应也必须一模一样包含这个参数。
restful了解下_第8张图片
redirectto
restful了解下_第9张图片
returnto
D:客户端向认证服务器申请令牌的HTTP请求,包含以下参数:
grant_type:表示使用的授权模式,必选项,此处的值固定为"authorization_code"。
code:表示上一步获得的授权码,必选项。
redirect_uri:表示重定向URI,必选项,且必须与A步骤中的该参数值保持一致。
client_id:表示客户端ID,必选项。
E:认证服务器发送的HTTP回复,包含以下参数:
access_token:表示访问令牌,必选项。
token_type:表示令牌类型,该值大小写不敏感,必选项,可以是bearer类型或mac类型。
expires_in:表示过期时间,单位为秒。如果省略该参数,必须其他方式设置过期时间。
refresh_token:表示更新令牌,用来获取下一次的访问令牌,可选项。
scope:表示权限范围,如果与客户端申请的范围一致,此项可省略。
restful了解下_第10张图片
segment收到保持io一致

貌似还是有点晕
看下别人的栗子
https://andaily.com/spring-oauth-server/resources/api/SOS_API-0.5.html


github

https://api.github.com/
https://api.github.com/user

{
  "current_user_url": "https://api.github.com/user",
  "current_user_authorizations_html_url": "https://github.com/settings/connections/applications{/client_id}",
  "authorizations_url": "https://api.github.com/authorizations",
  "code_search_url": "https://api.github.com/search/code?q={query}{&page,per_page,sort,order}",
  "commit_search_url": "https://api.github.com/search/commits?q={query}{&page,per_page,sort,order}",
  "emails_url": "https://api.github.com/user/emails",
  "emojis_url": "https://api.github.com/emojis",
  "events_url": "https://api.github.com/events",
  "feeds_url": "https://api.github.com/feeds",
  "followers_url": "https://api.github.com/user/followers",
  "following_url": "https://api.github.com/user/following{/target}",
  "gists_url": "https://api.github.com/gists{/gist_id}",
  "hub_url": "https://api.github.com/hub",
  "issue_search_url": "https://api.github.com/search/issues?q={query}{&page,per_page,sort,order}",
  "issues_url": "https://api.github.com/issues",
  "keys_url": "https://api.github.com/user/keys",
  "notifications_url": "https://api.github.com/notifications",
  "organization_repositories_url": "https://api.github.com/orgs/{org}/repos{?type,page,per_page,sort}",
  "organization_url": "https://api.github.com/orgs/{org}",
  "public_gists_url": "https://api.github.com/gists/public",
  "rate_limit_url": "https://api.github.com/rate_limit",
  "repository_url": "https://api.github.com/repos/{owner}/{repo}",
  "repository_search_url": "https://api.github.com/search/repositories?q={query}{&page,per_page,sort,order}",
  "current_user_repositories_url": "https://api.github.com/user/repos{?type,page,per_page,sort}",
  "starred_url": "https://api.github.com/user/starred{/owner}{/repo}",
  "starred_gists_url": "https://api.github.com/gists/starred",
  "team_url": "https://api.github.com/teams",
  "user_url": "https://api.github.com/users/{user}",
  "user_organizations_url": "https://api.github.com/user/orgs",
  "user_repositories_url": "https://api.github.com/users/{user}/repos{?type,page,per_page,sort}",
  "user_search_url": "https://api.github.com/search/users?q={query}{&page,per_page,sort,order}"
}


https://developer.paypal.com/docs/api/


刷下知乎长姿势

URL定位资源,用HTTP动词GET,POST,DELETE,DETC)描述操作
数据的元操作:
CRUD(create, read, update和delete,即数据的增删查改)

请求方式:
GET(SELECT):从服务器取出资源(一项或多项)
POST(CREATE):在服务器新建一个资源
PUT(UPDATE):在服务器更新资源(客户端提供完整资源数据)
PATCH(UPDATE):在服务器更新资源(客户端提供需要修改的资源数据)
DELETE(DELETE):从服务器删除资源

无状态即,所有资源可以通过url定位,不依赖其他资源或状态,直接进入该url就可以获取要的信息

*简而言之:
看Url就知道要什么
看http method就知道干什么
看http status code就知道结果如何
核心思想其实是把网页请求当成资源(名词而不是动宾短语)来看待,这三点都是为了实现如何把请求当成资源的

restful了解下_第11张图片
轮子哥的回答

soupui---https://www.ibm.com/developerworks/cn/opensource/os-cn-soapui/

你可能感兴趣的:(restful了解下)