Http客户端
IHttpClient提供了Http客户端封装,可以异步执行http调用,并使用http2协议。
- nop-http-api包定义了API接口
- nop-http-client-jdk提供了JDK内置的缺省实现
- nop-http-client-apache提供了Apache HttpClient 5的实现。
- nop-http-client-oauth提供了配置式的access token自动设置支持
需要使用哪个http client的实现就引入哪个包。
获取客户端IP
后端提供了统一的IHttpServerContext接口,对服务端上下文环境进行了封装。IClientIpFetcher接口从IHttpServerContext中获取客户端ip。 因为可能会经过中间的proxy服务器,客户端真实IP需要通过X-Forwarded-For或者Forworded这两个http header进行读取。可以定制nopClientIpFetcher来改变缺省获取逻辑。
经过SpringGraphQLWebService等入口服务调用的请求,ApiRequest中会设置nop-client-addr这个header。IServiceContext提供了getRequestClientIp()帮助函数.