API
文章平均质量分 52
surfirst
长期就职于全球化的公司团队。领导的团队是公司第一个转型为敏捷开发模式的团队,成功推动整个部门转型为敏捷开发模式。协调全球架构师,共同构建公司的参考架构。持续的创新者,拥有6项美国专利,为树立中国团队的创新形象建立基础。
展开
-
GraphQL 该如何实现分页?精通 GraphQL 必须了解的 Connection, Edge 和 Node 概念
GraphQL 推荐使用 Connection, Edge 实现基于光标 (Cursor) 的分页模式。Connection 就是需要被分页的内容,Edge 就是每一页的内容,而 Node 是一个类似于 Object 的父类接口。使用这种分页模式可以减少 GraphQL 使用者的学习时间,因为它是 GraphQL 的默认分页方式。...原创 2022-07-08 16:09:17 · 1909 阅读 · 1 评论 -
如何使用 KONG 的 JWT 插件
KONG 是一款很受欢迎的 API GATEWAY,使用它可以降低开发微服务的代码,因为我们可以通过配置来实现诸如认证 (Authentication) 和 (Authorization) 的功能。JWT 是现代 Web 软件经常用到的一种认证和授权方式,要让KONG 支持 JWT 认证,开发者需要首先配置好在 KONG 中为指定的微服务增加一个 service,然后给 service 增加一个 router。给 router 增加 JWT 插件接下来开发者需要给 router 增加 jwt 插件。原创 2021-07-11 21:24:38 · 2545 阅读 · 2 评论 -
如何让 keycloak 正确地运行在反向代理(Reverse Proxy)下
keycloak 是一款著名地开源用户认证、授权管理软件。在微服务的架构下,我们一般会把类似的服务放在反向代理后面,但是如果直接通过设置反向代理服务器,keycloak 总是会使用自己的端口或者地址。我们可以使用 PROXY_ADDRESS_FORWARDING 环境变量来解决这个问题。下面是共参考的 docker-compose 文件:version: '3'services: keycloak: image: quay.io/keycloak/keycloak:latest原创 2021-07-06 16:53:37 · 1218 阅读 · 0 评论 -
如何把 open api 定义转成 pdf 文件
开发者在开发 REST API 时一般会生成 Swagger 制作的 Open API 页面。这个页面虽然包含了所有的 API 使用信息,但是它是为测试 API 用的,不能用做 API 文档。开发者可以使用下面的步骤来生成 PDF 文档:下载 open api 的 json 文件点击下图红线上方的链接就可以下载把 json 内容粘贴到 http://editor.swagger.io 网页提供的编辑器里选择 Generate Client ,类型选择 html打开 html 然后选择打印为 p原创 2021-06-15 19:25:43 · 1420 阅读 · 0 评论 -
RESTful API 命名指南
RESTful API 又叫 Web API, REST 是 representational state transfer 的简写。RESTful API 使用 HTTP 协议的 GET, PUT, POST, PATCH 等操作来定义程序接口。由于这四个操作在 HTTP 协议都有特定的含义,所以我们应该遵循它们的习惯性用法。GET 用来查询PUT 来修改资源POST 用来增加资源或者执行控制命令PATCH 用来改变资源的某个属性在实际应用中由于只改变资源某个属性的情形较少,所以很多情况下会直原创 2021-05-13 23:34:51 · 2610 阅读 · 1 评论 -
ASP.NET Core 如何监听指定的IP或者端口
使用 ASP.NET CORE 编写 RESTful API 服务默认监听的是 localhost,我们可以通过修改 appsettings.json 来让我们的服务监听服务器上指定的或者所有的IP。加入下面的内容到 appsetings.json。实例如下:{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Li原创 2021-04-02 22:01:10 · 2167 阅读 · 1 评论 -
如何使用 .Net Core HttpClient调用RESTful API
下面的代码示例展示如何使用.Net Core HttpClient 调用 RESTful APIPost 请求var payload = JsonSerializer.Serialize(request, options);HttpContent content = new StringContent(payload, Encoding.UTF8, "application/json");HttpClient client = new();var response = await client.原创 2021-04-01 22:01:46 · 1114 阅读 · 0 评论 -
azure api management 与 auth0 的集成
azure api gateway 提供了 JWT 验证,auth0 推荐使用 machine to machine 的OAuth 验证方式,但是配置异常复杂。其实我们可以使用 jwks 来得到 auth0 的 public key,然后再来验证 auth0 的 JWT token。Azure API Gateway 的配置如下:<policies> <inbound> <base /> <cors>原创 2021-03-14 17:51:23 · 211 阅读 · 0 评论 -
如何解决 Azure API Management 跨域 (CORS) 设置不起作用的问题?
test原创 2021-03-04 21:39:01 · 595 阅读 · 1 评论 -
ASP.NET Core Swagger Open API 如何给Controller级增加参数
我们知道我们可以给 ASP.NET 的 controller 的每个方法增加参数,这样在 Swagger 页面我们就可以设置好参数,然后进行测试,但是有些参数我们会要求它出现在每个公开的 controller 方法中。我们固然可以给每个方法都增加一个参数设置,但是这样做会增加我们很多工作量。比如在下面的 TicketController 中,我们希望给每个方法都加一个 siteId 类型的 header 参数,来指名这个方法是发给哪个 site 的。一种方法是给 Purchase 和 Print 方法各增原创 2020-12-24 11:05:56 · 1038 阅读 · 0 评论 -
RESTful API 设计问答之二: 使用控制器 (controller) 还是使用 PUT 来修改资源?
有人说过 API 设计师就是程序员的用户体验工程师。优秀的 API 设计应该在用户使用起来方便的同时程序员实现起来也很简单。下面的系列文章是我的 API 设计工作中总结了一些技巧。大家看看是不是有用?您可以留言告诉我您的如何让 API 易用的想法。使用控制器 (controller) 还是使用 PUT 来修改资源?问题在 RESTful API 设计中, 一般建议使用 PUT 来修改资源,但是我们也会看到 API 用控制器 (controller) 带着这个 POST 方法来修改资源。哪种方法更好呢原创 2020-12-03 16:24:50 · 417 阅读 · 0 评论 -
RESTful API 设计问答之一: 返回一个 200 OK 的空数组还是返回 404 Not Found
有人说过 API 设计师就是程序员的用户体验工程师。优秀的 API 设计应该在用户使用起来方便的同时程序员实现起来也很简单。下面的系列文章是我的 API 设计工作中总结了一些技巧。大家看看是不是有用?您可以留言告诉我您的如何让 API 易用的想法。返回一个 200 OK 的空数组还是返回 404 Not Found问题有时候,很难说一个 GET API 应该返回一个 200 OK 的空数组呢,还是返回 404 Not Found. 实际上,这取决于客户端希望怎么处理 API 的返回结果。一个 4x原创 2020-12-03 14:51:16 · 383 阅读 · 0 评论 -
ASP.NET CORE如何使用JWKS来做认证和授权
JWKS是JSON Web Keys的缩写。如果API Service使用第三方的JWT Token来做认证和授权,那么通常第三方会提供一个JWKS地址,这个地址里有用来验证token的公钥。下面是从 okta 取到的一个 JWKS 的内容示例。我们可以看到这里有两个RSA RS256 公钥。{ "keys": [ { "kty": "RSA", "alg": "RS256", "kid": "hE2MW0jokw9QCkomGHA9zNAxnxIUc_v原创 2020-11-17 10:27:50 · 1727 阅读 · 0 评论 -
给Spring Boot增加open API文档支持
给pom.xml增加下面的依赖项: <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-ui</artifactId> <version>1.4.8</version> </dependency>给 properties文件增加下面的选项# swagger-ui custom pat原创 2020-11-02 21:53:01 · 425 阅读 · 0 评论 -
Spring Boot RESTful服务闪退的问题
你使用Spring Initializr生成了一个项目,用IntelliJ打开以后告诉你要加上,才能让@RestController属性生效。<dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.2.8.RELEASE</version></dependency>原创 2020-11-02 21:11:57 · 141 阅读 · 0 评论 -
几个增加 RESTful API 设计的可用性的技巧
Some Techniques for Better Usability in REST API DesignSomeone said that API designers are UX engineers for developers. Good API design should be easy to use for consumers as well as easy to be implemented by developers.Here are some techniques I summari原创 2020-10-27 11:03:30 · 457 阅读 · 0 评论