- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个方法发布到我的本地项目,我正在使用 HttpParams()
和 FormBuilder
。到目前为止,这是我的代码:
表格:
<form [formGroup]="SearchForm" (ngSubmit)="search(SearchForm.value)" name="SearchForms">
<input type="text" class="form-input-text" formControlName="checkin" value="10:00" width="20" placeholder="10:00" readonly>
<input type="hidden" formControlName="location" name="location" value="{{location}}">
组件.ts:
search(post)
{
const params = new HttpParams().set('location',post.location).set('check_in',post.checkin);
this.http.request(
"POST",
"http://localhost/bobobox/public/api/v1/room/search",
{
responseType:"json",
params
})
.subscribe(data => {
console.log(data);
});
}
在控制台中:
POST http://localhost/bobobox/public/api/v1/room/search?location=null&check_in=null 405 (Method Not Allowed)
我得到 2 个错误。
如何解决这个问题?
最佳答案
对于angular 7,8,如果你想在get request中发送参数,您可以使用以下方式。此示例从服务器中提取针对某些特定用户的帖子。
在 post-store.ts 文件中,getHttpParams() 是我们构造参数的方法。
post-component.ts
import { Component, OnInit, Input } from '@angular/core';
import { OperationsService, PostStoreService, AuthService } from 'client/app/services';
import { Observable } from 'rxjs';
@Component({
selector: 'app-posts',
templateUrl: './posts.component.html',
styleUrls: ['./posts.component.scss']
})
export class PostsComponent implements OnInit {
posts$ : Observable<any>;
constructor(private postStore : PostStoreService) { }
ngOnInit() {
this.posts$ = this.postStore.posts;
this.postStore.getPosts('get-posts' , { userId : this.userId });
}
}
post.component.html
<div class="user-post clearfix" *ngFor="let post of posts$ | async; let i=index;">
<div class="post-content">
<div class="post-header">
<div class="row no-gutters">
<div class="col-6">
<div class="user-info">
<span class="user-name">{{ post?.user.completeName) }}</span>
<span class="user-tag">@{{ post?.user.userName}}</span>
</div>
</div>
<div class="col-6">
<div class="post-time-stamp text-right">
<span class="post-date">{{ post?.createdAt | date : 'mediumDate' }}</span>
<span class="post-time">{{ post?.createdAt | date : 'shortTime' }}</span>
</div>
</div>
</div>
</div>
<div class="post-text">
<p>{{ post?.text}}</p>
</div>
</div>
</div>
post-store.service.ts
import { Injectable } from '@angular/core';
import { HttpClient, HttpParams } from '@angular/common/http';
import { BehaviorSubject } from 'rxjs';
import { environment } from 'client/environments/environment';
import { Http_Headers } from 'client/app/helpers';
import { map } from 'rxjs/operators';
@Injectable({
providedIn: 'root'
})
export class PostStoreService {
private readonly dataSubject: BehaviorSubject<any>;
private dataStore : { data : any };
constructor(private http: HttpClient) {
this.dataSubject = <BehaviorSubject<any>>new BehaviorSubject([]);
this.dataStore = { data: [] };
}
get posts() { return this.dataSubject.asObservable(); }
/* MAKING GET CALL WITH HTTPCLIENT */
getPosts(end_point: string , params? : any){
return this.http.get(`${environment.APIEndPoint + end_point}` , { headers : this.getHttpHeaders() , params : params ? this.getHttpParams( params ) : {} } )
.pipe(map((result : any) => result.response))
.subscribe(( data : any ) => {
console.log('Posts' ,data);
this.dataStore.data = data;
this.dataSubject.next( Object.assign( {} , this.dataStore).data);
},
error => console.error('Error' , error));
}
/* GETTING HTTPHEADERS */
getHttpHeaders(): HttpHeaders {
let headers : HttpHeaders = new HttpHeaders();
if(localStorage.getItem(JWTOKEN))
headers = headers.append('Authorization', localStorage.getItem(JWTOKEN));
headers = headers.append('Access-Control-Allow-Origin', '*');
headers = headers.append('Access-Control-Allow-Methods', 'OPTIONS, GET, POST, PUT, DELETE');
headers = headers.append("Content-Type" , "application/json");
headers = headers.append("Access-Control-Allow-Credentials" , "true");
headers = headers.append('Access-Control-Allow-Headers', 'Origin, Content-Type, Accept, Access-Control-Allow-Origin');
return headers;
}
/* GETTING HTTPPARAMS*/
getHttpParams(params : any) : HttpParams {
let httpParams : HttpParams = new HttpParams();
Object.keys(params).forEach(key => {
httpParams = httpParams.append(key , params[key]);
});
return httpParams;
}
}
关于angular - HttpParams 设置为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48438636/
我需要在我的 URL 中发送参数以从服务器获取过滤后的数据。 我是这样设置参数的 const queryParams = new HttpParams( { fromObj
我正在使用 angular 版本 11.2.1,我正在尝试发出一个 http 请求,一个带有参数和 header 的 Get 请求,问题是,当我对它们进行 console.log 时,它们都是空的,两
我正在使用 angular 版本 11.2.1,我正在尝试发出一个 http 请求,一个带有参数和 header 的 Get 请求,问题是,当我对它们进行 console.log 时,它们都是空的,两
我有一个方法发布到我的本地项目,我正在使用 HttpParams() 和 FormBuilder。到目前为止,这是我的代码: 表格: 组件.ts: search(post) { co
这个问题在这里已经有了答案: HttpClient.getParams() deprecated. What should I use instead? (1 个回答) 关闭 6 年前。 我从 co
我在表单控件中有一些类别,我将它们发送到一个字符串数组中,如下所示: [1,4,6] 这是我的实际代码: let categoryIds = new Array() this.selectedCate
以前我用过 import { Http, Response, Headers, URLSearchParams } from "@angular/http"; API 调用 getprojectsc
在 Angular 5 HttpClient 中,我可以通过这种方式设置 HttpParams()。 const body = new HttpParams() .set('email', '
我有非常简单的功能: createParams(paramsArray, withToken: boolean): HttpParams { let params = new HttpPara
有没有办法遍历 HttpParams 对象的所有条目? 其他人也有类似的问题 ( Print contents of HttpParams / HttpUriRequest? ),但答案并不奏效。 查
在 Angular 服务中,我使用 HttpParams 向服务发送字符串: get(phone: string): Observable { let params = new HttpPar
我有一个标准对象,它的一些属性可以为空,如果我什么都不做,查询字符串包括像 &p=undefined 这样的东西,这是不可取的,因为在 WebApi 中,这些是"null" 而不是 null所以在 A
我有一个HttpUriRequest例如,有没有办法打印它包含的所有参数?例如,我几乎可以得到它们: HttpUriRequest req = ...; HttpParams params = req
因此,从 http 迁移到 httpClient,我尝试使用 HttpParams 为我的获取请求设置参数...... 逻辑非常简单 const params = new HttpParams();
将项目从 Angular 7 迁移到 Angular 8 后,我遇到了 HttpParams 和 HttpHeaders 问题。当我调用 API 时,未添加参数。如果有人能帮助我解决这个问题,那就太好
第一次在这里问问题,而且是 android 编程的新手。我正在按照在线 youtube 教程创建用户“Tonikami TV”的登录名。除了 serverRequests 类之外,应用程序的一切都很好
有没有办法使用 HttpParams 和 fromObject 有条件地添加参数?我尝试在实例化 HttpParams 后添加条件参数,但这不起作用: const params = new HttpP
我正在使用带有 HttpInterceptors 的 Angular 5。 我已经知道我可以从 HttpParams via several methods 获得我想要的每个值. 此外 - 如果我想查
我正在尝试通过交换机将文件从本地发布到另一个平台。当我使用 DefaultHttpClient 执行此操作时,没有问题。 HttpParams params = new BasicHttpParams
HttpClient 或 HttpPost 等命令无法正常工作。谁能帮帮我? @Override protected users doInBackground(Void... params)
我是一名优秀的程序员,十分优秀!