Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在开机自检时检索API网关URI

如何在开机自检时检索API网关URI
EN

Stack Overflow用户
提问于 2019-06-11 23:54:11
回答 1查看 52关注 0票数 0

我正在使用java8和Spring Cloud在微服务架构中开发一个系统。我实现了一个post控制器,它接收json格式的对象,然后将其保存在数据库中。问题是:如何获取包含刚刚保存的对象的API网关的URI,以便在创建的响应正文中返回它?

例如,当我使用URI uri = ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}").buildAndExpand(savedProfile.getId()).toUri();时,我得到的是http://Boss.mshome.net:8081/profile/1而不是localhost:8765/nukr-profile-service/profile/1,它是带有API Gateway路径的端点。

检索此URI的最佳实践是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-12 13:07:47

所以,我找到了一个解决方案,我只是不知道这是不是最好的做法。我的post方法最终是这样的:

代码语言:javascript
运行
AI代码解释
复制
@PostMapping("/profile")
    public ResponseEntity<Object> createProfile(@Valid @RequestBody Profile profile) {
        UriComponents requestComponents = ServletUriComponentsBuilder.fromCurrentRequest().path("").build();
        InstanceInfo gatewayService = this.eurekaClient.getNextServerFromEureka(NUKR_API_GATEWAY_SERVICE, false);
        Profile savedProfile = this.profileRepository.save(profile);

        String uriStr = requestComponents.getScheme() + "://" + gatewayService.getIPAddr() + ":" + gatewayService.getPort() + "/" + this.profileServiceName +
                requestComponents.getPath() + "/" + savedProfile.getId();

        return ResponseEntity.created(URI.create(uriStr)).build();
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56553011

复制
相关文章
如何将wordpress所有文章批量改为已发布状态
  用wordpress建站的一个好处就是bd站长工具平台上有数据结构插件,可以认为bd默认支持wp发展,另外一种建站程序是discuz。我们在用wordpress发布文章时,特别是那种多用户投稿的文章一般都会设置发布状态为“等待审核”,如果你对他们之前的文章比较认可的话可以直接通过。一篇篇在后台通过审核会累趴的,那么如何将wordpress所有文章批量改为已发布状态呢?一个简单的sql语句就能搞定。 UPDATE `wp_posts` SET `post_status` ='publish' WHERE
ytkah
2018/03/06
2.4K0
代码重构实战-将值对象改为引用对象(Change Value to Reference)
一个数据结构中可能包含多个记录,而这些记录都关联到同一个逻辑数据结构。例如,我可能会读取一系列订单数据,其中有多条订单属于同一个顾客。遇到这样的共享关系,既能将顾客信息作为值对象看待,也能将其视为引用对象:
JavaEdge
2022/04/06
8860
Oracle中order by造成分页错误
问题:今天在工作中,在service中调用分页查询列表接口的时候,返回的到页面的数据中总是存在缺失的数据,还有重复的数据。
星哥玩云
2022/08/18
6510
【JavaScript】当我们尝试用JavaScipt测网速
https://www.npmjs.com/package/network-speed-test
啦啦啦321
2019/09/27
2.4K0
Grafana 将默认的元数据库 sqlite 改为 mysql
mysql: create database grafana; create user grafana@'%' IDENTIFIED by 'grafana'; grant all on grafana.* to grafana@'%'; flush privileges; Grafana:(本地mysql) # vi /etc/grafana/grafana.ini [database] type = mysql host = 127.0.0.1:3306 name = grafana
我是李超人
2020/08/21
4.3K0
46 - 将xml文档保存在MongoDB数据库中
1. 请解释什么是NoSQL数据库,有哪些类型的NoSQL数据库,请说出这些数据库的典型产品,以及每个类型的NoSQL数据库的适用场景 NoSQL: Not Only SQL 键值(key-value)数据库 Redis、Riak、Memcached 适用场景: 用来存储用户信息,比如会员、配置文件、参数、购物车等 文档(Document-Oriented)类型 MongoDB CouchDB RavenDB 适用场景: 日志、分析数据 列存储数据库 HBase Cassandra 适用场景: 日志、博客平
ruochen
2021/05/29
2.4K0
46 - 将xml文档保存在MongoDB数据库中
【已解决】将LinkedHashMap转换为需要的对象
通过这样转换之后,list类型转换为我需要的数据类型,然后可以进行接下来的工作,方法在Jackson的ObjectMapper包中。
凯哥Java
2022/12/16
4.4K0
【已解决】将LinkedHashMap转换为需要的对象
尝试造了个工具类库,名为 Diana
项目地址: diana 文档地址: http://muyunyun.cn/diana/ 造轮子的意义 为啥已经有如此多的前端工具类库还要自己造轮子呢?个人认为有以下几个观点吧: 定制性强,能根据自己的需求为主导延伸开发。万一一不小心还能帮到别人(比如 React 库); 纸上得来终觉浅,很多流行的库,只是照着它们的 API 进行使用,其实这些库里蕴含着大量的知识、技巧,最好的办法就是仿照它们来写些小 demo,从而体会这些库的精髓; 造轮子的过程中能让自己体会到与平常业务开发不一样的乐趣;比如和日常业务
牧云云
2018/05/02
9630
【已解决】如果将MySQL数据库中的表生成PDM
有时候,我们需要MySQL数据库中的表生成对应的PDM文件,这里凯哥就讲讲第一种将MySQL数据库的表生成对应的PDM文件。
凯哥Java
2023/07/31
6060
【已解决】如果将MySQL数据库中的表生成PDM
将 UWP 中 CommandBar 的展开方向改为向下展开
发布于 2018-10-05 19:37 更新于 2018-10-16 08:57
walterlv
2020/02/10
1.8K0
解决CentOS中yum安装程序时出现的"Transaction check error"错误
CentOS的VPS中默认安装过MariaDB,但是笔者还是喜欢用原来的Mysql版本;所以经过一番波折,成功把MariaDB删除并安装上了Mysql。
石瞳禅
2018/09/18
13.1K0
将图片保存在iPhone的相册中
有时候你的应用需要将应用中的图片保存到用户iPhone或者iTouch的相册中。 可以使用UIKit的这个类方法来完成。
EltonZheng
2021/01/26
1.3K0
类A是公共的,应在名为A.java的文件中声明错误
第一种!!! “类A是公共的,应在名为A.java的文件中声明”这句话需要分两步来理解: 1、如果类A被声明为公共的(public),那么必须将类A保存在名为A.java的文件中; 2、反之,在一个文件中最多包含一个顶级的公共类,并且该公共类的名字与文件名相同。比如文件A.java中,允许定义一个或多个类,但最多允许一个顶级的公共类,此类名为A。此处强调的顶级的意思是,允许非顶级的公共类存在,如内部公共类等。 第二种 这是你的命名错误 把文件名改为 A.java 因为你里面的类是 pub
Angel_Kitty
2018/04/09
2.7K0
MyBatis Order By注入错误
这里orderBy, orderType是前端传过来的话很容易产生sql注入问题。
明明如月学长
2021/08/27
1.5K0
Grafana将数据库由sqlite3改为mysql
Grafana数据默认是存放在sqlite3,可以通过修改配置文件将数据库改为mysql。
我是李超人
2020/08/21
1.9K0
日更系列:错误设置protobuf对象的防不胜防
为了做一件事情,设置推荐响应的物品item的打分结果。(item在这个场景是广告app)。
mariolu
2021/10/12
4410
JMS消息持久化,将ActiveMQ消息持久化到mySql数据库中
1.  前言 ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMSProvider实现,尽管JMS规范出
Java学习123
2018/05/16
1.7K0
将现有MySQL数据库改为大小写不敏感
用过MySQL的应该都会注意到,默认情况下,Linux下安装的MySQL是大小写敏感的,也就是说Table1和table1可以同时存在。而Windows下的MySQL却是大小写不敏感的,所有表名和数据库名都会变成小写。
深蓝studyzy
2022/06/16
1.6K0
当我们在谈论 memory order 的时候,我们在谈论什么
该文介绍了如何利用C++ 11新特性在程序中引入memory order,从而确保数据在多线程环境中正确性和性能。作者详细介绍了memory order的概念以及C++ 11中提供的两种memory order:memory_order_seq_cst和memory_order_acquire。文章还讨论了在多线程环境中出现的一些问题,例如:memory fence、memory barrier、relaxed memory order等,并给出了示例代码以说明如何使用C++ 11的新特性来避免这些问题。
serena
2017/09/12
4.1K4
当我们在谈论 memory order 的时候,我们在谈论什么
C# 可空引用类型 Nullable 更强制的约束:将警告改为错误 WarningsAsErrors
于是 C# 8.0 带来的可空引用类型由于默认以警告的形式出现,所以实际上约束力非常弱。
walterlv
2023/10/22
4590
C# 可空引用类型 Nullable 更强制的约束:将警告改为错误 WarningsAsErrors

相似问题

错误“数据库中已存在名为'MD‘的对象。”

40

数据库中已存在名为'AspNetRoles‘的对象。正在尝试添加迁移

170

数据库中已存在名为'xxx‘的对象

11

数据库中已存在名为'#BaseData‘的对象

162

数据库中已存在名为'DATABASECHANGELOGLOCK‘的对象

2202
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档