标签: query-parameters

JAX-RS和未知的查询参数

我有一个调用RESTEasy(JAX-RS)Java服务器的Java客户端.我的一些用户可能拥有比服务器更新版本的客户端.

该客户端可以调用服务器上的资源,该资源包含服务器不知道的查询参数.是否有可能在服务器端检测到这一点并返回错误?

我理解,如果客户端调用尚未在服务器上实现的URL,则客户端将收到404错误,但如果客户端传入未实现的查询参数(例如:),会发生什么?sort_by=last_name

rest jax-rs query-parameters

6
推荐指数
1
解决办法
3785
查看次数

访问者使用不存在的URL

我今天有人通过以下链接访问我的网站:

www.example.com/pagename.php?_sm_byp=iVVVMsFFLsqWsDL4
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释这是如何工作的,因为我的实际URL结束了pagename.php,我从来没有允许用户输入任何PHP查询,从来没有会话ID或任何类似的东西.

url query-parameters

6
推荐指数
1
解决办法
763
查看次数

春天的queryparm支持,用于提供宁静的Web服务

如何queryparam以真正宁静的方式获得春天的宁静网络服务支持......

for example i have url like following

localhost:8080/myapp/booksearch/title/{title}/author/{author}?sortby=relevance&year=2013

title and author I can get by @PathVariable .....

where i want sortby and year optional..

java rest spring query-parameters

6
推荐指数
1
解决办法
2万
查看次数

Node-postgres:命名参数查询(nodejs)

出于实际原因,例如在使用PDO的php中,我经常在准备SQL查询时为参数命名。

那么我可以在node-postgres模块中使用命名参数吗?

现在,我在互联网上看到许多示例和文档,它们显示了如下查询:

client.query("SELECT * FROM foo WHERE id = $1 AND color = $2", [22, 'blue']);
Run Code Online (Sandbox Code Playgroud)

但这也正确吗?

client.query("SELECT * FROM foo WHERE id = :id AND color = :color", {id: 22, color: 'blue'});
Run Code Online (Sandbox Code Playgroud)

或这个

client.query("SELECT * FROM foo WHERE id = ? AND color = ?", [22, 'blue']);
Run Code Online (Sandbox Code Playgroud)

我问这个问题是因为$n在动态构建查询的情况下,带编号的参数对我没有帮助。

sql query-parameters node.js node-postgres

6
推荐指数
2
解决办法
5210
查看次数

Jersey中单个值的多个@QueryParam键

是否可以在Jersey中为单个对象/变量允许多个 @QueryParam键?

在此输入图像描述

实际:

@POST
public Something getThings(@QueryParam("customer-number") Integer n) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

所以,如果我?customer-number=3在URL后添加它的工作原理.

预期:

如果我添加以下任何值,我想得到上面的行为:

  • ?customer-number=3
  • ?customerNumber=3
  • ?customerNo=3

OBS:

  1. QueryParam注释是这样的:

    ...
    public @interface QueryParam {
       String value();
    }
    
    Run Code Online (Sandbox Code Playgroud)

    所以,它不能接受多个String值(比如@Produces).

  2. 下面的方法允许用户同时使用具有相同含义的多个键(并且我希望它们之间具有"OR"条件):

    @POST
    public Something getThings(@QueryParam("customer-number") Integer n1,
                               @QueryParam("customerNumber") Integer n2,
                               @QueryParam("customerNo") Integer n3) {
        ...
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 这样的东西不起作用:

    @POST
    public Something getThings(@QueryParam("customer-number|customerNumber|customerNo") Integer n) {
        ...
    }
    
    Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

细节:

  • 泽西岛2.22.1
  • Java 8

java jax-rs jersey query-parameters

6
推荐指数
1
解决办法
1344
查看次数

URIBuilder 和列表查询参数

我正在使用 apache URIBuilder为Rest 服务的GET 方法构建查询字符串。

@RequestMapping(value="/remote") 
    public Return getTest(Ordine ordine) throws Exception{
        ...
    }
Run Code Online (Sandbox Code Playgroud)

这是输入对象:

public class Ordine{    
    private List<String> codici;
    //..get...set..
}
Run Code Online (Sandbox Code Playgroud)

我无法理解如何将此字符串列表设置为查询参数。

我试图设置参数两次:

URIBuilder builder = new URIBuilder()
                .setHost("localhost")
                .setPort(8080)
                .setScheme("http")
                .setPath("/remote")
                .setParameter("codici", codicilist.get(0))
                .setParameter("codici", codicilist.get(1));
Run Code Online (Sandbox Code Playgroud)

但是第一个参数会被第二个参数覆盖。然后我尝试在参数名称中附加 []:

URIBuilder builder = new URIBuilder()
                .setHost("localhost")
                .setPort(8080)
                .setScheme("http")
                .setPath("/remote")
                .setParameter("codici[]", codicilist.get(0))
                .setParameter("codici[]", codicilist.get(1));
Run Code Online (Sandbox Code Playgroud)

但它只是以名称“codici[]”发送,第一个参数被覆盖。然后我尝试了一个逗号分隔值:

URIBuilder builder = new URIBuilder()
                .setHost("localhost")
                .setPort(8080)
                .setScheme("http")
                .setPath("/remote")
                .setParameter("codici", String.join(",",codicilist));
Run Code Online (Sandbox Code Playgroud)

但如果失败......我如何设置参数列表?

java rest web-services query-parameters uribuilder

6
推荐指数
2
解决办法
2万
查看次数

Nodejs - Express - 在 API 中处理可选查询字符串参数的最佳实践

我想制作一个有 5 个可选查询参数的 API,我想知道是否有更好的方法来处理这个问题,现在我用 if 条件检查每个参数,这有点脏!有什么方法可以在不使用大量 if 条件的情况下处理所有场景?

let songName = req.query.songName
let singerName = req.query.singerName
let albumName = req.query.albumName
let publishDate = req.query.publishDate

if(songName && singerName && albumName && publishDate) {
   const response = songs.filter(c => { 
      return c.songName === songName && c.singerName === singerName && c.albumName === albumName && c.publishDate === publishDate
   }
   res.send({
      "Data" : response
   })
}

if(songName && singerName && albumName && !publishDate) {
   const response = songs.filter(c => { 
      return c.songName === songName && …
Run Code Online (Sandbox Code Playgroud)

javascript if-statement query-parameters node.js express

6
推荐指数
1
解决办法
2046
查看次数

Angular 7:如何从iframe访问URL中的查询字符串?

正在开发的应用程序托管在iframe中.

我在我的应用程序中配置了以下路由:

    const routes: Routes = [
  {
    path: '',
    pathMatch: 'full',
    redirectTo: 'list'
  },
  {
    path: 'list',
    component: ListComponent,
    canActivate: [CanActivateRoute]
  },
  {
    path: 'dashboard',
    loadChildren: './modules/dashboard/dashboard.module#DashboardModule'
  }
];

@NgModule({
  imports: [RouterModule.forRoot(routes, { enableTracing: true })],
  exports: [RouterModule],
  providers: []
})
export class AppRoutingModule { }
Run Code Online (Sandbox Code Playgroud)

ListComponent,OnInit方法,我用下面的代码来获取查询字符串PARAMS:

this.router.events.subscribe(val => {
      if (val instanceof RoutesRecognized) {
        console.log("val.state.root.firstChild.params: " + val.state.root.firstChild.params);
      }
    }); 
const firstParam: string = this.route.snapshot.queryParamMap.get('id');
Run Code Online (Sandbox Code Playgroud)

这些似乎都不起作用.我申请的网址如下:

https://company.com/#/app-dev/list?id=3

QueryParamMap或者RoutesRecongnized似乎没有在url中获取查询字符串"id = 3".它总是返回null.

任何人都可以帮我如何从角度应用程序中的URL检索查询参数/查询字符串?

query-parameters angular angular7 angular-cli-v7

6
推荐指数
1
解决办法
2471
查看次数

Spring feign 客户端中@QueryParam 名称中的特殊字符

我们的一个外部 API 使用带有特殊字符的查询参数名称(不要问我为什么,我不知道)。我的这个 API 的假客户端方法声明如下:

@GetMapping("/v1/user/{userId}/orders")
List<Order> getOrders(
    @PathVariable("userId") String userId,
    @RequestParam("page[number]") Integer pageNumber,
    @RequestParam("page[size]") Integer pageSize);
Run Code Online (Sandbox Code Playgroud)

正如我提到的,请求参数包含特殊字符[]. 我正在使用 Spock 进行测试,我想像这样设置 Wiremock 存根:

wiremock.stubFor(
  get(urlPathMatching('/v1/users/' + userId + '/orders'))
    .withQueryParam("page[number]", new EqualToPattern("1"))
    .withQueryParam("page[size]", new AnythingPattern())
    .willReturn(
      status(200)
        .withHeader("Content-type", "application/json")
        .withBody("""[]""")
    ))
Run Code Online (Sandbox Code Playgroud)

但我得到:

--------------------------------------------------------------------------------------------------
| Closest stub                        | Request                                                  |
--------------------------------------------------------------------------------------------------
                                      |
GET                                   | GET
/v1/users/123/orders                  | /v1/users/123/orders?page%5Bnumber%5D=%7Bpage%5Bnumber%5
                                      | D%7D&page%5Bsize%5D=%7Bpage%5Bsize%5D%7D
                                      |
Query: page[number] = 1               |                                 <<<<< Query is not present
Query: page[size] [anything] (always) |                                 <<<<< …
Run Code Online (Sandbox Code Playgroud)

spring query-parameters wiremock feign

6
推荐指数
1
解决办法
2554
查看次数

encodeURIComponent 与 URLSearchParams 的不同输出

我使用URLSearchParmasAPI构建了一个带有查询参数的 oauth2 url 。但是,输出 URL 没有返回预期的 URL。任何人都可以帮助我理解这两个API之间的差异,我怎么能得到相同的结果的输出encodeURIComponent,使用URLSearchParams?谢谢!

const expected = encodeURIComponent('code id_token'); // code%20id_token

const search = new URLSearchParams();
search.set('response_type', 'code id_token');
search.toString(); // code+id_token
Run Code Online (Sandbox Code Playgroud)

url query-parameters oauth-2.0

6
推荐指数
1
解决办法
1288
查看次数