发布
社区首页 >问答首页 >Angular2中的路径参数

Angular2中的路径参数
EN

Stack Overflow用户
提问于 2016-12-01 20:46:11
回答 2查看 994关注 0票数 2

在对网络服务进行RESTful调用时,我们应该如何处理Angular 2中的路径参数呢?

我已经找到了用于查询参数的URLSearchParams对象,但从我找到的情况来看,我们似乎只能将就路径本身的字符串连接。喜欢

代码语言:javascript
代码运行次数:0
复制
let url = 'api/v1/something/' + encodeURIComponent(someParameter) + 
          '/etc/' + encodeURIComponent(anotherParam) + '/and/so/on';

是否包含在angular2中,其功能类似于:

代码语言:javascript
代码运行次数:0
复制
let url = new URL('api/v1/something/{id}/etc/{name}/and/so/on', param1, param2);

当然,我自己也可以创建类似的东西,但如果angular2中包含了一些东西,我会更喜欢。

EN

回答 2

Stack Overflow用户

发布于 2017-03-25 02:20:56

实际上,假设已经设置和编码了idname,那么您可以使用string interpolation和几乎与您建议的完全相同的东西。

代码语言:javascript
代码运行次数:0
复制
let url = new URL(`api/v1/something/${id}/etc/${name}/and/so/on`);

我要指出的是,目前the ES6 URL类只支持searchParams,但没有路径参数的概念。

而且,我知道没有一种方法可以在不使用URLSearchParams实现your own QueryEncoder的情况下自动对参数进行编码

票数 4
EN

Stack Overflow用户

发布于 2017-05-12 20:24:04

如果有人感兴趣,这就是我最终要做的:

代码语言:javascript
代码运行次数:0
复制
export interface PathParameters {
  [parameterName: string]: string;
}

export class Url {

  public static create(url: string, parameters: PathParameters) {
    const placeholders = url.match(/({[a-zA-Z]*})/g);
    placeholders.forEach((placeholder: string) => {
      const key = placeholder.substr(1, placeholder.length - 2);
      const value = parameters[key];
      if (!value) {
        throw new Error(`parameter ${key} was not provided`);
      }
      url = url.replace(placeholder, encodeURIComponent(value));
    });
    return url;
  }

}

使用方法:

代码语言:javascript
代码运行次数:0
复制
const url = Url.create('/api/cars/{carId}/parts/{partId}', {
    carId: carId,
    partId: partId
  });
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40911065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档