JSon - server 전단 가상 REST API 서비스 구축
9339 단어 전단 프레임servernodeMVVM 탐색 여행
왜 제 이 슨 - server 를 자세히 소개 해 주 시 겠 어 요?우리 전단 개발 자 들 이 백 스테이지 관리 프로젝트 를 개발 하 는 과정 에서 가장 많이 접촉 하 는 것 은 API 연결 이 고 그 다음 에 데이터 렌 더 링 페이지 나 동적 데이터 바 인 딩 이기 때 문 입 니 다.
그러나 매우 모순 되 는 문 제 는 앞 뒤 가 함께 개 발 된 경우 가 많 고 백 엔 드 의 진도 가 전단 의 진 도 를 따라 가지 못 할 수도 있다 는 것 이다.일반적인 상황 에서 해결 방법 은 전단 응용 에서 데 이 터 를 모 의 기록 하 는 것 이다. 요청 한 과정 이 부족 한 후에 데 이 터 를 업데이트 하고 데 이 터 를 삭제 하 는 등 일부 페이지 가 복잡 한 상호작용 을 전환 하 는 장면 에서 데 이 터 는 vuex 나 redux 의 지원 이 필요 하 다.
전단 에 json - server 의존 을 설치 하면 이러한 문 제 를 잘 해결 할 수 있 습 니 다. 전단 페이지 논 리 를 쓸 때 직접 상호작용 을 요청 할 수 있 습 니 다. 데 이 터 를 추가, 업데이트, 삭제 하면 로 컬 json 파일 의 데 이 터 를 직접 수정 할 수 있 습 니 다.전역 정의 변수 에 데 이 터 를 저장 할 필요 가 없습니다.또한 도 메 인 을 직접 넘 어 요청 할 수 있 습 니 다. 같은 소스 요청 이 필요 하지 않 아 도 연결 할 수 있 습 니 다.
설치 하 다
1. npm 설치 (cnpm 설치 권장) npm install -g json-server 2. yarn 설치 yarn global add json-server
설치 완료 후 출력:
C:\Users\92809>yarn global add json-server
yarn global v1.10.1
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Installed "[email protected]" with binaries:
- json-server
2. json 데이터베이스 데이터 시트 만 들 기
1. 사용자 정의 dbname. json / dbname. js 파일 을 만 듭 니 다. 2. dbname 파일 의 파일 형식 은 json 스타일 을 유지 합 니 다. 3. JSon 스타일 은 다음 과 같 습 니 다.
{
"posts": [
{ "id": 1, "title": "json-server", "author": "typicode" }
],
"comments": [
{ "id": 1, "body": "some comment1", "author": { "name": "typicode1", "age": 10 },"postId": 1 },
{ "id": 2, "body": "some comment2", "author": { "name": "typicode2", "age": 12 },"postId": 2 },
{ "id": 3, "body": "some comment3", "author": { "name": "typicode3", "age": 15 },"postId": 3 }
],
"profile": { "name": "typicode" }
}
4. Js 스타일 은 다음 과 같다.
module.exports = function() {
return {//...}
};
3. json - server 서비스 열기
(1) 원생 태 개방
D:\me\json-server\jserver-one>json-server --w onedb.json
\{^_^}/ hi!
Loading onedb.json
Done
Resources
http://localhost:3000/news
http://localhost:3000/comments
Home
http://localhost:3000
Type s + enter at any time to create a snapshot of the database
Watching...
(2) 원 격 제 이 슨 데이터베이스 파일 열기
$ json-server http://example.com/file.json
$ json-server http://jsonplaceholder.typicode.com/db
(3) 서비스 포트 번호 설정
json-server --watch db.json --port 3004
(4) yarn / npm 오픈
2-1. yarn init / npm init 2 - 2. 초기 화 된 package. json 파일 에 추가:
"scripts": {
"server": "json-server onedb.json --port 3003"
}
2 - 3. 실행:
npm run server / yarn run server /. yarn server
(4) 서버 로 로 컬 정적 웹 페이지 불 러 오기
md asset
cd asset
echo asset.html > asset.html
json-server onedb.json --port 3006 --static asset [ ]
접근:http://localhost:3006/asset.html (OK)
주: 시작 할 때 디 렉 터 리 설정 이 없 으 면 - > json - server onedb. json -- port 3006
4 - 1. Public 디 렉 터 리 를 설정 하면,http://localhost:3006/Public 의 index. html 파일 4 - 2 에 접근 합 니 다. Public 디 렉 터 리 나 index 가 없 으 면 html 파일 은 {} 을 표시 합 니 다.
4. json - server 가 제공 하 는 요청 방식
요약: Get 요청 은 주로 데 이 터 를 가 져 오 는 데 사 용 됩 니 다. POST 요청 은 데 이 터 를 추가 하 는 데 사 용 됩 니 다. PUT 요청 은 교체 데 이 터 를 수정 하 는 데 사 용 됩 니 다. PATCH 는 일부 교체 데 이 터 를 표시 합 니 다. OPTIONS 는 서버 가 지원 하 는 HTTP 요청 방법 및 기타 요청 기능 옵션 (GET, POST, PUT, DELETE, PATCH, OPTIONS)
주: POST \ PUT \ PATCH 요청 은 요청 헤드 를 설정 해 야 합 니 다. Content - type: application / json
1. 기본 요청 방식
GET /posts
GET /posts/:id
POST /posts
PUT /posts/:id
PATCH /posts/:id
DELETE /posts/:id
2. json 데이터베이스 의 모든 데이터 가 져 오기
GET /db
3. 매개 변수 찾기 요청 방식
GET /posts?title=json-server&author=typicode
GET /posts?id=1&postid=2
GET /comments?author.name=typicode1 * .
4. 페이지 링크 요청 (first, last, prev, next)
GET /posts?_page=7
GET /posts?_page=7&_limit=20
5. 승강 순서 정렬 요청
GET /users?_sort=id&_order=asc
GET /users?_sort=name&_order=asc
: GET /posts?_sort=user,views&_order=desc,asc
6. 범위 조회 데이터
GET /users?_start=2&_end=20 ( substring)
GET /users?_start=2&_limit=3 ( substr)
7. 문자 모호 일치 에 따라 데이터 조회
GET /users?q=
5. 사용자 정의 경로 설정
1. 새 routes. json 파일: echo {} > routes. json 2. 파일 에 쓰기:
{
"/api/*": "/$1",
"/:resource/:id/show": "/:resource/:id",
"/books/:name": "/books?name=:name",
"/articles\\?id=:id": "/books/:id",
"/articles/:id": "/books/:id"
}
3. 시작 서비스: json - server onedb. js -- routes routes. json
인쇄:
\{^_^}/ hi!
Loading onedb.js
Loading routes.json
Done
Resources
http://localhost:3000/users
http://localhost:3000/books
Other routes
/api/* -> /$1
/:resource/:id/show -> /:resource/:id
/books/:name -> /books?name=:name
/articles\?id=:id -> /books/:id
/articles/:id -> /books/:id
Home
http://localhost:3000
Type s + enter at any time to create a snapshot of the database
4. ap 인터페이스 테스트
GET /api/users GET /users
GET /users/1/show GET /users/1
GET /books/ GET/books?name=
GET /articles?id=3 GET /books/3
6. Node 모듈 에 사용 방법 도입
1. 새 server. js 파일: echo server > server. js 2. json - server, express 설치 에 의존:
cnpm install express --save-dev
cnpm install json-server --save-dev
:
yarn add express --dev
yarn add json-server --dev
서비스 시작: node server. js
2 - 1. express 로 서비스 시작:
const app = require('express')();
app.get('/',(req,res)=>{
res.send({'name':' A '});
});
var server = app.listen(3008,()=>{
var host = server.address().address;
var port = server.address().port;
console.log('example app listening at http://%s:%s',host,port);
});
2 - 2. json - server 로 서비스 시작
const jsonServer = require('json-server')
const server = jsonServer.create()
const router = jsonServer.router('onedb.json')
const middlewares = jsonServer.defaults()
server.use(middlewares)
server.use(router)
server.listen(3009, () => {
console.log('JSON Server is running at port 3009.')
})
7. json - server node 에서 의 진급 사용
1. 사용자 정의 경로 설정
(1) 상기 json - server. js 파일 에 추가:
// JSON Server router
server.get('/echo', (req, res) => {
res.jsonp(req.query)
})
// body-parser POST,PUT PATCH
// JSON Server
server.use(jsonServer.bodyParser)
server.use((req, res, next) => {
if (req.method === 'POST') {
req.body.createdAt = Date.now()
}
// json-server
next()
})
(2) 시작 서비스 node json - srevr. js (3) 테스트 사용자 정의 인터페이스:
: GET /echo?id=2&pid=3&page=20
: { "id": "2", "pid": "3", "page": "20" }
2. 접근 권한 제어
server.use((req, res, next) => {
if (isAuthorized(req)) { //
next() // json-server
} else {
res.sendStatus(401)
}
})
3. 로 컬 json 데 이 터 를 걸 러 내 고 포맷 후 요청 에 응답 합 니 다.
// In this example, returned resources will be wrapped in a body property
router.render = (req, res) => {
res.jsonp({
body: res.locals.data // res.locals.data onedb.json
})
}
4. 사용자 정의 복귀 상태 코드
// In this example we simulate a server side error response
router.render = (req, res) => {
res.status(500).jsonp({
body: res.locals.data,
error: "error message here"
})
}
5. 경로 재 설정 규칙 추가
// Add this before server.use(router)
server.use(jsonServer.rewriter({
'/api/*': '/$1',
'/blog/:resource/:id/show': '/:resource/:id'
}))
테스트: GET / api / coments 등가 GET / coments
6. 하위 경로 대상 만 들 기
server.use('/api', router)
여덟, 다시 이야기
Angular 의 유닛 테스트 에서 json - server 를 접 한 후에 이 가상 전단 서 비 스 를 사용 하 는 것 이 매우 편리 하 다 고 생각 합 니 다.그리고 하루 종일 json - srever 에 관 한 지식 과 사용 방법 을 훑 어 보 았 습 니 다. 정말 좋 은 서비스 입 니 다. 하지만 node 와 결합 하면 어색 합 니 다.제 가 express 를 사용 하 는 것 에 습관 이 되 었 을 수도 있 습 니 다. 그런데 뭐라고 해 야 할 까요? 기능 이 정말 강하 지만 뒤에 express 와 결합 하여 개발 할 때 약간 무 거 운 느낌 이 듭 니 다.가 볍 고 빠 르 고 교묘 한 취지 에 어 긋 나 지만 이것 도 개인의 취향 에 따라 개인 적 인 건 의 는 npm 또는 yarn 과 결합 하여 사용 하 는 것 이 좋 습 니 다. 한 줄 의 명령 으로 해결 하고 시원 하 게 하 는 것 이 좋 습 니 다.
아홉, 몇 마디 더, 하하
좋 은 프로젝트 는 우리 모두의 지원 이 필요 합 니 다. 많은 칭찬 을 눌 러 야 작 가 는 우리 에 게 더욱 좋 은 학습 과 사용 할 수 있 는 소스 코드, github 소스 코드 프로젝트 주 소 를 제공 할 수 있 습 니 다.https://github.com/typicode/json-server#mounting-json-server-on-another-endpoint-example
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MVC의 심연를 보면 Trygve Reenskaug씨가 고안했다고 쓰여 있다. 뷰에 조작 오브젝트가 있는 경우와, 단순히 키보드나 마우스의 상태를 픽업하는 것을 고려하는 예이다. 그러나 잘 생각하면 이상하다. 예를 들어 키보드에...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.