发布到 json 服务器问题

Posted

技术标签:

【中文标题】发布到 json 服务器问题【英文标题】:Post to json server issues 【发布时间】:2017-03-30 22:23:54 【问题描述】:

我还是新手,但我正在尝试将自己的数据发布到https://jsonplaceholder.typicode.com/users 以供学习。在页面底部,它说要使用npm install -g json-server,所以我在我的项目中运行了该命令,我尝试将数据发布到上面的 web url,我还尝试将其发布到静态 json 文件,认为它可能会以某种方式托管文件使用 npm install -g json-server 命令,但我发现使用本地文件时找不到 json 文件,如果我尝试发布到上面的 url,那么它会在控制台日志中显示一个帖子,但我的表用户永远不会更新。谁能告诉我如何让它工作,以便我可以看到我的 POST 数据?

user.service.ts

      import Injectable from '@angular/core';
import 'rxjs/add/operator/map';
import Http, Headers from '@angular/http';
import User from './user';
@Injectable()
export class UserService
constructor(private _http:Http)



getUsers()
return this._http.get('http://localhost:4200/users')
.map(res=>res.json());


addUser(post)

return this._http.post('http://localhost:4200/users', post)
.map(res=> res.json());





form.component.ts

   import  Component, OnInit  from '@angular/core';
import UserService from '../users.service';
import Http from '@angular/http';
import Router from '@angular/router';
import FormGroup, FormControl from '@angular/forms';

@Component(
  selector: 'app-form',
  templateUrl: './form.component.html',
  styleUrls: ['./form.component.css'],
  providers: [UserService]

)
export class FormComponent implements OnInit
  private user;

  private _users;
  constructor(
    private _userService:UserService


  )


  

userForm = new FormGroup(
name: new FormControl(),
username: new FormControl(),
email: new FormControl(),
address: new FormGroup(
  street: new FormControl(),
  suite: new FormControl(),
  city: new FormControl(),
  postalcode: new FormControl()

)

);
onSubmit()
this._userService.addUser(this.userForm.value)
.subscribe(res => 
this.user = res;
console.log(res);

)




【问题讨论】:

你启动服务器了吗?此外,您的网址似乎仍然指向在线版本,而不是您自己的本地版本。 我已经尝试将它指向两者。我把上面的代码贴在网上,但我也试过指向app/users.json,这是本地文件,但是得到了找不到它的消息。它与 GET 请求的路径相同,所以我知道路径是正确的。我更新了上面的代码以反映本地 json 文件 【参考方案1】:

你不需要指向 app/users.json ,因为你已经运行了服务器。根据documentation,您可以发布到http://localhost:3000/users

【讨论】:

我更新了上面的代码以反映您的建议,但它现在没有在 GET 中提取任何 json 数据,并且 users.json 位于 app 目录中。错误:意外的令牌 您可能想检查您的服务器是否一切正常,它可能返回错误。【参考方案2】:

我相信你错过了公共服务(什么是合理的)

注意:资源不会真正在服务器上创建,但它 会假装的。

由于您已经在本地安装了它,只需运行:

$json占位符

将 Angular 中的 URL 主机名替换为 http://localhost:3000

【讨论】:

我运行了 npm install -g json-server 命令(这就是你所说的运行 jsonplaceholder 的意思吗?)它现在没有在 GET 中提取任何 json 数据,并且 users.json 在 app 目录中。错误:意外的标记 对不起,我以为你运行了 (npm install -g jsonplaceholder),因为它写在文档中,之后你应该能够使用 (jsonplaceholder) 作为命令,如 (gulp 或任何其他已安装的 npm 库全局),json-server 是 jsonplaceholder 使用的库

以上是关于发布到 json 服务器问题的主要内容,如果未能解决你的问题,请参考以下文章

如何将带有 JSON OBJECT 数据的 JSON ARRAY 发布到服务器?

将 Postman 请求发送到 json 服务器时出现问题

JSON 服务器 - 将数据发布到数组中的特定对象中

IOS:将数组值发布到 JSON 服务器

将 JSON 数组发布到 Android 中的 Web 服务

如何将json数据发布到Web服务器