Browsed by
作者:zeoly

nginx location proxy关于斜杠配置转发代理的例子

nginx location proxy关于斜杠配置转发代理的例子

在nginx配置时,根据uri配置location进行不同的路由转发代理等,这种场景较多,对于正则匹配等方面不在这里复述了,主要关注斜杠配置的几个例子。 例如进入的请求uri为/foo/api 在代理转发的例如upsteam后无uri的情况 location proxy_pass 转换后结果 /foo/ http://upstream/ /api /foo http://upstream/ //api /foo/ http://upstream /foo/api /foo http://upstream /foo/api 在代理转发的例如upsteam后变更uri的情况 此情况下无论如何都无法保留location本身匹配的部分,即foo location proxy_pass 转换后结果 /foo/ http://upstream/bar/ /bar/api /foo http://upstream/bar/ /bar//api /foo/ http://upstream/bar /barapi /foo http://upstream/bar /bar/api

Spring Boot与GraphQL – 篇三 集成开发

Spring Boot与GraphQL – 篇三 集成开发

[toc] Spring Boot与GraphQL – 篇三 集成开发 在了解了GraphQL相关概念,以及使用的方法后,就该进入到实操阶段了。使用常用的springboot来搭建服务,并提供GraphQL查询。 配置 在Spring Boot中集成GraphQL非常简单,只需引入两个包 pom.xml <dependency> <groupId>com.graphql-java</groupId> <artifactId>graphql-spring-boot-starter</artifactId> <version>4.0.0</version> </dependency> <dependency> <groupId>com.graphql-java</groupId> <artifactId>graphql-java-tools</artifactId> <version>4.3.0</version> <dependency> 定义Schema 推荐在resources目录下建立graphql文件夹,在其中建立root.graphqls和schema.graphqls两个文件。一般会在root.graphqls文件中放Query或者Mutation的接口定义,在schema.graphql…

阅读全文 Read More

Spring Boot与GraphQL – 篇二 Schema格式与规范

Spring Boot与GraphQL – 篇二 Schema格式与规范

模式 Schema 在了解了GraphQL是如何查询以及如何变更数据后,我们需要进一步了解一下。对于客户端来说,需要在请求数据前知道数据的格式,包括有哪些field,这些字段的子对象又有哪些,子对象又是什么样的数据结构。这样就出现了schema的概念。 对象类型与字段 在GraphQL的schema中,构成的基本元素就是对象object类型type,即指定你想要获取的对象,以及想要获取的对象的字段,例如: type Character { name: String! appearsIn: [Episode!]! } Character定义了一个为GraphQL对象类型 name和appearsIn为Character类型中的字段 String是一个预定义的标量类型 String!表示此字段不可为空 [Episode!]!表示返回的是一个Episode对象列表,并且也是非空的 参数 每个GraphQL对象的字段都可以有若干个参数,例如下面例子中的length字段: type Starship { id: ID! name: String! length(unit: LengthUnit = METER): Float } 参数都需要预先定义好,例如上面例子中,unit就是length的一个参数。参数可以是必需也可以是可选,当一个参数是可选时,可以定义默认值。如果不给unit传递参数,那么METER即为默认值。 查询与变更类型 schema中大多数类型都是对象类型,除此之外,还有两种重要类型:查询que…

阅读全文 Read More

Spring Boot与GraphQL – 篇一 如何进行查询

Spring Boot与GraphQL – 篇一 如何进行查询

背景介绍 GraphQL,由Facebook开源,并在github api v4中得到了使用,替代了v3中restful的地位。既然大厂使用,那就得去看看到底是个什么货色。 GraphQL相对于传统的restful接口,主要是在灵活性上有较大改进。例如,要增加一个属性返回,之前的做法可能需要更改接口的返回对象;如果属性越加越多,可能衍生出多个接口(包含返回少量的和大量的数据),也可能由此诞生一个巨大的接口(包含所有的数据);如果是多个对象的组合,由于组合的形式多种多样,有可能也会造成多个接口的产生。 而解决此缺点的做法是,客户端根据自己的需求来传递请求参数,参数中指明需要哪些数据,则服务器端根据这些参数返回给客户端所需要的数据。这样,关于数据的特定字段、或者组合、聚合类的需求,都无需服务端关心,客户端自己确定就好。 查询与变更 Queries and Mutations 字段 Fields 客户端通过指定Fields来控制返回的数据,Fields即为请求的数据,类似字段的含义。指定了服务端定义好的标量,例如: 请求 { hero { name # Queries can have comments! friends { name } } } 响应 { “data”: { “hero”: { “name”: “R2-D2”, “friends”: [ { “name”: “Luke Skywalker” }, { “name”: “Han Solo” }, { “name”: “Leia Organa…

阅读全文 Read More

springboot集成整合mongodb

springboot集成整合mongodb

springboot集成整合mongodb 在非关系型数据库的使用中,mongodb的出镜率现在也不小了,在最近做地图相关的项目中,关于海量轨迹数据的存储也选型了此数据库。在springboot中集成mongodb也非常简单,spring data模块提供了开箱即用的功能。 配置 首先向项目中引入依赖,修改pom.xml文件: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> 并在配置文件application.properties中配置连接池相关参数: spring.data.mongodb.uri=mongodb://username:password@localhost:27017/test_db 或者 spring.data.mongodb.username=username spring.data.mongodb.password=password spring.data.mongodb.database=test_db spring.data.mongodb.host=localhost spring.data.mongodb.prot=27017 通过以上两步,springboot应用到mongodb的连接就已…

阅读全文 Read More

4.6. Spring Data库的自定义实现

4.6. Spring Data库的自定义实现

4.6. Custom Implementations for Spring Data Repositories 此章节覆盖了库的自定义与如何组合一个复合库。 This section covers repository customization and how fragments form a composite repository. 当一个查询方法需要不同的行为,或者无法由查询导出实现,就有必要提供一个自定义的实现。Spring Data库允许你提供一个自定义库并于泛型CRUD抽象和查询方法功能集成。 When a query method requires a different behavior or cannot be implemented by query derivation, then it is necessary to provide a custom implementation. Spring Data repositories let you provide custom repository code and integrate it with generic CRUD abstraction and query method functionality. 4.6.1. 自定义个体库 4.6.1. Customizing Individual Repositories 为了让自定义功能来丰富一个库,你必须先定义一个片段接口和与一个自定义功能的实现,如下例所示: To…

阅读全文 Read More

5.3.9. 应用查询提示

5.3.9. 应用查询提示

5.3.9. Applying Query Hints 为了在库接口声明的查询上应用JPA查询提示,可以使用@QueryHints注解。接收参数为JPA @QueryHint注解数组,和一个为了在应用分页时,用于失效提示应用被计数查询触发的布尔值,如下例所示: To apply JPA query hints to the queries declared in your repository interface, you can use the @QueryHints annotation. It takes an array of JPA @QueryHint annotations plus a boolean flag to potentially disable the hints applied to the additional count query triggered when applying pagination, as shown in the following example: 例66. 在库方法上使用QueryHints Example 66. Using QueryHints with a repository method public interface UserRepository extends Repository<User, Long> { @QueryHints(value = { @QueryHint(name = “name”, valu…

阅读全文 Read More

5.3.8. 修改查询

5.3.8. 修改查询

5.3.8. Modifying Queries 前面的章节都描述了如何声明查询,来得到一个指定的实体或者实体集合。你可以使用“Spring Data库的自定义实现”中描述的工具,来添加一个自定义的修改行为。此方法对于大多数自定义功能都可用,你只需要通过@Modifying注解查询方法并绑定参数,就可以修改查询,如下例所示: All the previous sections describe how to declare queries to access a given entity or collection of entities. You can add custom modifying behavior by using the facilities described in “Custom Implementations for Spring Data Repositories”. As this approach is feasible for comprehensive custom functionality, you can modify queries that only need parameter binding by annotating the query method with @Modifying, as shown in the following example: 例64. 声明操作查询 Example 64. Declaring manipulating q…

阅读全文 Read More

5.3.7. 使用SpEL表达式

5.3.7. 使用SpEL表达式

5.3.7. Using SpEL Expressions 从Spring Data JPA发布1.4版本时,支持使用@Query手动定义查询来支持严格的SpEL模板表达式。在查询执行时,这些表达式通过一系列预设的变量进行评估。Spring Data JPA支持entityName变量。用法为select x from #{#entityName} x。会把entityName插入关联指定库的领域类型。entityName会按如下解析:如果领域类型有@Entity注解的名称属性,则会使用此名称。否则将使用领域类型的简单类名。 As of Spring Data JPA release 1.4, we support the usage of restricted SpEL template expressions in manually defined queries that are defined with @Query. Upon query execution, these expressions are evaluated against a predefined set of variables. Spring Data JPA supports a variable called entityName. Its usage is select x from #{#entityName} x. It inserts the entityName of the domain type as…

阅读全文 Read More

5.3.6. 使用命名参数

5.3.6. 使用命名参数

5.3.6. Using Named Parameters 默认Spring Data JPA使用基于位置的参数绑定,前面的例子都是如此。当有关于参数位置的重构时,会使查询方法容易出现错误。为了解决这个问题,可以在一个方法参数上使用@Param注解,给定一个名称并在查询中绑定这个名称,如下例: By default, Spring Data JPA uses position-based parameter binding, as described in all the preceding examples. This makes query methods a little error-prone when refactoring regarding the parameter position. To solve this issue, you can use @Param annotation to give a method parameter a concrete name and bind the name in the query, as shown in the following example: 例61. 使用命名参数 Example 61. Using named parameters public interface UserRepository extends JpaRepository<User, Long> { @Query(“select u from …

阅读全文 Read More