Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/microsoft/typed-rest-client
Node Rest and Http Clients with typings for use with TypeScript
https://github.com/microsoft/typed-rest-client
Last synced: about 1 month ago
JSON representation
Node Rest and Http Clients with typings for use with TypeScript
- Host: GitHub
- URL: https://github.com/microsoft/typed-rest-client
- Owner: microsoft
- License: other
- Created: 2017-01-09T16:35:28.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2024-09-20T17:09:18.000Z (about 2 months ago)
- Last Synced: 2024-10-04T08:32:48.175Z (about 1 month ago)
- Language: TypeScript
- Size: 1.23 MB
- Stars: 669
- Watchers: 39
- Forks: 116
- Open Issues: 19
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
- Security: SECURITY.md
Awesome Lists containing this project
README
[![Build Status](https://dev.azure.com/ms/typed-rest-client/_apis/build/status/Microsoft.typed-rest-client?branchName=master)](https://dev.azure.com/ms/typed-rest-client/_build/latest?definitionId=42&branchName=master)
# Typed REST and HTTP Client with TypeScript Typings
A lightweight REST and HTTP client optimized for use with TypeScript with generics and async await.
## Features
- REST and HTTP client with TypeScript generics and async/await/Promises
- Typings included so no need to acquire separately (great for intellisense and no versioning drift)
- Basic, Bearer and NTLM Support out of the box. Extensible handlers for others.
- Proxy support
- Certificate support (Self-signed server and client cert)
- Redirects supportedIntellisense and compile support:
![intellisense](./docs/intellisense.png)
## Install
```
npm install typed-rest-client --save
```Or to install the latest preview:
```
npm install typed-rest-client@preview --save
```## Samples
See the [samples](./samples) for complete coding examples. Also see the [REST](./test/tests/resttests.ts) and [HTTP](./test/tests/httptests.ts) tests for detailed examples.
## Errors
### HTTP
The HTTP client does not throw unless truly exceptional.
* A request that successfully executes resulting in a 404, 500 etc... will return a response object with a status code and a body.
* Redirects (3xx) will be followed by default.See [HTTP tests](./test/tests/httptests.ts) for detailed examples.
### REST
The REST client is a high-level client which uses the HTTP client. Its responsibility is to turn a body into a typed resource object.
* A 200 will be success.
* Redirects (3xx) will be followed.
* A 404 will not throw but the result object will be null and the result statusCode will be set.
* Other 4xx and 5xx errors will throw. The status code will be attached to the error object. If a RESTful error object is returned (`{ message: xxx}`), then the error message will be that. Otherwise, it will be a generic, `Failed Request: (xxx)`.See [REST tests](./test/tests/resttests.ts) for detailed examples.
## Debugging
To enable detailed console logging of all HTTP requests and responses, set the NODE_DEBUG environment varible:
```
export NODE_DEBUG=http
```or
```
set NODE_DEBUG=http
```## Node support
v2 - [current, maintained] - Supports node 16 and above
v1 - End Of Life, for Node < 16, contains security vulnerabilities, use at your own risk## Contributing
To contribute to this repository, see the [contribution guide](./CONTRIBUTING.md)
To build:
```bash
$ npm run build
```To run all tests:
```bash
$ npm test
```To just run unit tests:
```bash
$ npm run units
```## Code of Conduct
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [[email protected]](mailto:[email protected]) with any additional questions or comments.
## Security Issues
Do you think there might be a security issue?
Have you been phished or identified a security vulnerability?
Please don't report it here - let us know by sending an email to [email protected].