Java基础—实现微服务模块接收Http请求回调数据

简介: 本文中详细介绍在微服务模块中实现接收公网Http请求数据回调接口说明。

壹、涉及微服务结构相关的知识点

从零搭建微服务SpringCloud(二)新建一个SpringCloud项目

贰、实现代码

1、导入依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.49</version>
</dependency>

2、resources目录创建application.yml文件

image.png

#自定义端口号
server:
  port: 7000
#自定义服务注册名
spring:
  application:
    name: HTTP-SERVICE

3、搭建启动类

image.png

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HttpServiceRequestStart {
    public static void main(String[] args) {
        SpringApplication.run(HttpServiceRequestStart.class,args);
    }
}

4、创建服务类

image.png

import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

@Service
public class HttpServiceRequestService {
    private Logger logger = LoggerFactory.getLogger(HttpServiceRequestService.class);
    public void saveNotify(String reqBody){
        logger.info("reqBody="+reqBody);
        com.alibaba.fastjson.JSONObject resObj = JSONObject.parseObject(reqBody);
        System.out.println(resObj);
    }
}

5、搭建控制层

image.png

import com.cloud.start.com.service.HttpServiceRequestService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.InputStreamReader;

@RestController
@CrossOrigin
@RequestMapping(value = "/first", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public class HttpServiceRequestController {
    @Autowired
    private HttpServiceRequestService httpServiceRequestService;
    @RequestMapping(value = "/request" ,method = RequestMethod.POST)
    public String one(HttpServletRequest result){
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader(result.getInputStream()));
            String line = null;
            StringBuilder sb = new StringBuilder();
            while((line = br.readLine())!=null){
                sb.append(line);
            }
            String reqBody = sb.toString();
            httpServiceRequestService.saveNotify(reqBody);
        }catch (Exception e){
            e.printStackTrace();
        }
        return "success";
    }
}

叁、参数详解

1、服务层详解

在服务层中,有代码为

com.alibaba.fastjson.JSONObject resObj = JSONObject.parseObject(reqBody);

我们进入JSONObject.parseObject(reqBody);的parseObject(String text)中看一下

image.png

如上图,第一行为Object obj = parse(text);
继续进入到parse方法

image.png

我们发现,parse方法是用来将String类型转为JSON类型

回到parseObject(String text)

如图,如果obj是JSONObject创建的对象,那么直接将obj强转为JSONObject对象并返回
image.png

如果不是JSONObject创建的对象,则将obj转为JSON后强转为JSONObject对象并返回,如果无法转换,则抛出新异常“can not cast to JSONObject”,无法转换为 JSON 对象。
image.png

2、控制层详解

@RequestMapping(value = "/first", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
MediaType参数介绍

目录
相关文章
|
6月前
|
设计模式 Java Spring
Java 设计模式之责任链模式:优雅处理请求的艺术
责任链模式通过构建处理者链,使请求沿链传递直至被处理,实现发送者与接收者的解耦。适用于审批流程、日志处理等多级处理场景,提升系统灵活性与可扩展性。
649 2
|
7月前
|
Java API 开发工具
【Azure Developer】Java代码实现获取Azure 资源的指标数据却报错 "invalid time interval input"
在使用 Java 调用虚拟机 API 获取指标数据时,因本地时区设置非 UTC,导致时间格式解析错误。解决方法是在代码中手动指定时区为 UTC,使用 `ZoneOffset.ofHours(0)` 并结合 `withOffsetSameInstant` 方法进行时区转换,从而避免因时区差异引发的时间格式问题。
340 4
|
7月前
|
监控 Java 数据库
从零学 Dropwizard:手把手搭轻量 Java 微服务,告别 Spring 臃肿
Dropwizard 整合 Jetty、Jersey 等成熟组件,开箱即用,无需复杂配置。轻量高效,启动快,资源占用少,内置监控、健康检查与安全防护,搭配 Docker 部署便捷,是构建生产级 Java 微服务的极简利器。
757 117
|
7月前
|
监控 Kubernetes Java
使用 New Relic APM 和 Kubernetes Metrics 监控 EKS 上的 Java 微服务
在阿里云AKS上运行Java微服务常遇性能瓶颈与OOMKilled等问题。本文教你通过New Relic实现集群与JVM双层监控,集成Helm部署、JVM代理注入、GC调优及告警仪表盘,打通从节点资源到应用内存的全链路观测,提升排障效率,保障服务稳定。
500 115
|
8月前
|
数据采集 JSON Java
Java爬虫获取1688店铺所有商品接口数据实战指南
本文介绍如何使用Java爬虫技术高效获取1688店铺商品信息,涵盖环境搭建、API调用、签名生成及数据抓取全流程,并附完整代码示例,助力市场分析与选品决策。
|
8月前
|
数据采集 存储 前端开发
Java爬虫性能优化:多线程抓取JSP动态数据实践
Java爬虫性能优化:多线程抓取JSP动态数据实践
|
7月前
|
算法 Java
Java多线程编程:实现线程间数据共享机制
以上就是Java中几种主要处理多线程序列化资源以及协调各自独立运行但需相互配合以完成任务threads 的技术手段与策略。正确应用上述技术将大大增强你程序稳定性与效率同时也降低bug出现率因此深刻理解每项技术背后理论至关重要.
464 16
|
9月前
|
IDE Java API
Java 17 新特性与微服务开发的实操指南
本内容涵盖Java 11至Java 17最新特性实战,包括var关键字、字符串增强、模块化系统、Stream API、异步编程、密封类等,并提供图书管理系统实战项目,帮助开发者掌握现代Java开发技巧与工具。
450 1
|
9月前
|
缓存 Cloud Native Java
Java 面试微服务架构与云原生技术实操内容及核心考点梳理 Java 面试
本内容涵盖Java面试核心技术实操,包括微服务架构(Spring Cloud Alibaba)、响应式编程(WebFlux)、容器化(Docker+K8s)、函数式编程、多级缓存、分库分表、链路追踪(Skywalking)等大厂高频考点,助你系统提升面试能力。
919 0
|
9月前
|
存储 人工智能 Java
java之通过Http下载文件
本文介绍了使用Java实现通过文件链接下载文件到本地的方法,主要涉及URL、HttpURLConnection及输入输出流的操作。
627 0