# 使用 Service 封装第三方请求

使用 Service 来封装第三方请求可以提升项目的可读性和可维护性

# 定义 Service

使用 @Service() 装饰器来定义一个 Service

import { Service } from '@tiger/common'
import axios from 'axios'

@Service()
export class UserService {
    async getUserById(id: number) {
        const { data } = await axios.get('http://faker_url', { params: { id }})
        return data;
    }
}

# 使用 Service

我们可以使用 @Autowried 装饰器来注入 UserService 到控制器当中

import { Controller, Get, Autowried } from '@tiger/common'
import { UserService } from '../service/user-service'

@Controller('users')
export class UserController {

    @Autowried
    userService: UserService;

    @Get('/:id')
    async show(id: number) {
        const user = await this.userService.getUserById(id)
        return {
            code: 200,
            data: user,
            message: 'ok'
        }
    }
}