快速入门
如果你没有接触过 Midway,没关系,本章节我们将从实例的角度,一步步地搭建出一个 Midway 标准应用,展示天气信息,让你能快速的入门 Midway。
环境准备
- 操作系统:支持 macOS,Linux,Windows
- 运行环境:Node.js 环境要求
初始化项目
我们推荐直接使用脚手架,只需几条简单指令,即可快速生成项目。
$ npm init midway@latest -y
选择 koa-v3 项目进行初始化创建,项目名可以自定,比如 weather-sample。
现在可以启动应用来体验下。
$ npm run dev
$ open http://localhost:7001
同时,我们也提供了完整的实例,可以在 npm init midway 之后,选择 quick-start 项目,创建即可,方便对照学习。
编写 Controller
如果你熟悉 Web 开发或 MVC,就知道第一步我们需要编写 Controller 和 Router。
在脚手架创建的文件中,我们已经有了一些文件,我们暂时忽略他们。
在 controller 目录中,新建一个 src/controller/weather.controller.ts 文件,内容如下。
import { Controller, Get } from '@midwayjs/core';
@Controller('/')
export class WeatherController {
// 这里是装饰器,定义一个路由
@Get('/weather')
async getWeatherInfo(): Promise<string> {
// 这里是 http 的返回,可以直接返回字符串,数字,JSON,Buffer 等
return 'Hello Weather!';
}
}
现在我们可以通过访问 /weather 接口返回数据了。
添加参数处理
在示例中,我们需要一个 URL 参数来动态展示不同城市的天气。
通过添加 @Query 装饰器,我们可以获取到 URL 上的参数。
import { Controller, Get, Query } from '@midwayjs/core';
@Controller('/')
export class WeatherController {
@Get('/weather')
async getWeatherInfo(@Query('cityId') cityId: string): Promise<string> {
return cityId;
}
}
除了 @Query 装饰器,Midway 也提供了其他请求参数的获取,可以查看 路由和控制 文档。
编写 Service
在实际项目中,Controller 一般用来接收请求参数,校验参数,不会包括特别复杂的逻辑,复杂而复用的逻辑,我们应该封装为 Service 文件。
我们来添加一个 Service 用来获取天气信息,其中包括一个 http 请求,获取远端的数据。
代码如下:
// src/service/weather.service.ts
import { Provide, makeHttpRequest } from '@midwayjs/core';
@Provide()
export class WeatherService {
async getWeather(cityId: string) {
return makeHttpRequest(`https://midwayjs.org/resource/${cityId}.json`, {
dataType: 'json',
});
}
}