[Express] Level 3: Reading from the URL
City Search
We want to create an endpoint that we can use to filter cities. Follow the tasks below to to create this new route.
Create a new route for GET request to '/cities'
. The second argument should be a callback function which takes request
and response
.
app.get('/cities', function(request , response){ });
From inside of our route, create an if
statement that checks whether a value is set to the query string parameter search
.
app.get('/cities', function(request , response){ if(request.query.search){ } });
Inside of the if
block, call the citySearch()
function, passing in the user submitted parameter for search. Then return the result of the function as a JSON response.
app.get('/cities', function(request , response){ var keyword = request.query.search; if(keyword){ response.json(citySearch(keyword)); } });
var express = require('express'); var app = express(); var cities = ['Caspiana', 'Indigo', 'Paradise']; app.get('/cities', function(request , response){ var keyword = request.query.search; if(keyword){ response.json(citySearch(keyword)); } }); function citySearch (keyword) { var regexp = RegExp(keyword, 'i'); var result = cities.filter(function (city) { return city.match(regexp); }); return result; } app.listen(3000);
Dynamic Route Variables
Consider the following Dynamic Route:
app.get('/cities/:name', function (request, response) { // ... })
When requests come in for this route, how can we access the city name submitted by the user?
Answer:
requst.params.name
City Information
Now lets look up some information about the city.
Inside of our dynamic route, grab the name submitted by the user, lookup the city information on the cities
object and assign it to the cityInfo
variable.
var cities = { 'Lotopia': 'Rough and mountainous', 'Caspiana': 'Sky-top island', 'Indigo': 'Vibrant and thriving', 'Paradise': 'Lush, green plantation', 'Flotilla': 'Bustling urban oasis' }; app.get('/cities/:name', function (request, response) { var cityInfo, name; name = request.params.name; cityInfo = cities[name]; });
Check to see if cityInfo
exists and if so, respond with the cityInfo in JSON format.
app.get('/cities/:name', function (request, response) { var cityInfo, name; name = request.params.name; cityInfo = cities[name]; if(cityInfo){ response.json(cityInfo); } });
If cityInfo
does not exist, respond with a 404 HTTP status code and a JSON message that says "City not found"
.
app.get('/cities/:name', function (request, response) { var cityInfo, name; name = request.params.name; cityInfo = cities[name]; if(cityInfo){ response.json(cityInfo); }else{ response.status(404).json("City not found"); } });
var express = require('express'); var app = express(); var cities = { 'Lotopia': 'Rough and mountainous', 'Caspiana': 'Sky-top island', 'Indigo': 'Vibrant and thriving', 'Paradise': 'Lush, green plantation', 'Flotilla': 'Bustling urban oasis' }; app.get('/cities/:name', function (request, response) { var cityInfo, name; name = request.params.name; cityInfo = cities[name]; if(cityInfo){ response.json(cityInfo); }else{ response.status(404).json("City not found"); } }); app.listen(3000);
相关文章
- Introduction to Windows 8: The Definitive Guide for Developer
- [Node.js] Set the Node.js Project to ECMAScript Modules (ESM)
- [ARIA] Read error message for the focused form field by using aria-describedby
- [Javascript] Understanding the difference between .prototype and .__proto__ in JavaScript
- [AST Babel] Add function name into the console log 'path.findParent(t.isFunctionDeclaration)'
- Unable to read the project file 'client.csproj'. Could not load file or assembly 'Microsoft.Build.En
- What is the usage of excludedParameters
- Useful code snippet to parse the key value pairs in URL
- CM: How to get the complete url of a product attachment
- 【 Codeforces Round #430 (Div. 2) A 】 Kirill And The Game
- Error Domain=NSCocoaErrorDomain Code=518 “The file couldn’t be saved because the specified URL type
- Guideline 1.5 - Safety - Developer Information.The support URL specified in your app’s metadata
- iOS 打包上传时报错its private key is not installed.to get a copy of the private key
- 已解决EROR 1064 (42000): You have an error in. your SOL syntax. check the manual that corresponds to yo
- error when loading the sdk 发现了元素 d:skin 开头无效内容
- 【DataStructure】The description of Java Collections Framework
- 爆炸几何之 CCPC网络赛 I - The Designer (笛卡尔定理)