thinking-github / spring-netty

netty http server netty web mvc

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

spring-netty

netty http server netty web mvc

启用 netty http server java config

@Configuration
@EnableNettyWeb
public class NettyHttpConfig implements HttpServerConfigurer, NettyWebConfigurer {
    
    //支持配置netty TCP 参数设置
    @Override
    public void configure(ServerBootstrap bootstrap) {
        bootstrap.option(ChannelOption.SO_BACKLOG, 1024);
    }


     //支持用户自定义拦截器全局业务处理 LogIdInterceptor /reporterInterceptor
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //registry.addInterceptor(new LogIdInterceptor());
        //registry.addInterceptor(reporterInterceptor());
    }

    //http 消息转换器 默认已添加JSON 处理器,可不设置
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {

    }

     //http 异常处理,可以定义异常处理
    @Override
    public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers) {

    }

    //可以为空,如果为空,默认使用框架自带的线程池,同时支持线程大小等参数设置
    @Override
    public ExecutorService getThreadPoolExecutor() {
        return null;
    }

    //可以为空,如果为空,默认使用spring容器启动时自带的BeanValidator验证
    @Override
    public Validator getValidator() {
        return null;
    }
}

web http request handler controller

//复用spring 注解

//org.springframework.stereotype.Controller //org.springframework.web.bind.annotation.RequestMapping

@Controller
@RequestMapping(value = "/v1/cfg", produces = MediaType.APPLICATION_JSON_VALUE)
public class AbRequestController implements HttpRequestHandler<ClientRequest> {

    @Resource
    private AbTestService abTestService;


    @Override
    public Object handleRequest(ChannelHandlerContext ctx, FullHttpRequest request,
                                ClientRequest inputBody) throws IOException {
        // 业务处理方法
        List<?> exps = abTestService.getExpConfig(inputBody);



        //monitor report key name
        ctx.channel().attr(REQUEST_HANDLER_METHOD_KEY).set(MetricConst.ABTEST_GET_EXP_CONFIG);

        return ApiResponse.success(exps);
    }
    
      @Data
        public static class ClientRequest{
           private String clientId;
           private String osId;
           private String locale;
           private int  mode;
           private string packageName;
        }
}

请求测试API 接口

curl --location --request POST 'http://127.0.0.1:9090/v1/cfg' \
--header 'Content-Type: application/json' \
--data '{
    "clientId": "qe3tb13j6c1202",
    "osId": "1",
    "locale": null,
    "mode": 1,
    "packageName": "com.example.browser"
}'

About

netty http server netty web mvc

License:Apache License 2.0


Languages

Language:Java 100.0%