@nos-sdk/nos-node-sdk
TypeScript icon, indicating that this package has built-in type declarations

0.2.6 • Public • Published

NOS Node.js SDK

Coverage Status Build Status

NOS Node.js SDK 实现了 NOS 对象操作接口,基于此 SDK 能方便快速地实现 JavaScript 应用程序来使用 NOS 的对象存储服务。

NOS 是网易云推出的对象存储服务,稳定可靠

为什么会有这个项目?

主要原因是官方的 nos-node-sdk 有如下问题

  • 不符合 JavaScript 命名规范,不支持 Promise
  • 代码质量过差
  • 代码提示能力不足
  • 不支持 TypeScript
  • 年久失修

Feature

  • Full Typescript 支持,几乎不需要文档就可以上手
  • Support Async/Await or Callback
  • 操作简单专注,不会给你返回额外的信息
  • 丰富的测试用例
  • 支持创建直传 Token

设计哲学

在设计 API 的时候,遵循了一些设计原则。

  • Keep it Simple 一切都是那么直观,体现在接口上面就是见名明意。比如 getObject 就是获取对象内容,返回值便是 Buffer/string/Stream,而不是类似于 {err: Error, data: xxx} 的结构,你只是想得到内容体,为何要返回这么多数据。Believe me, It's a Trouble.
  • Arguments Bus 参数总线。将参数都整合在一个对象中传递给函数,而不是散落在函数的参数中。这样有力于在后面版本的迭代中,保证接口的兼容性。例如 getObject({objectKey: 'key', bucket: 'bucket'}) 而不是 getObject('key', 'bucket', options)
  • Throw as Possible 如果有错误,能抛出就抛出,而不是内部消化,然后包装成返回参数。例如 deleteObject(params).then(() => console.log('success')).catch(() => console.log('error')) 而不是 deleteObject(params).then(success => console.log(success))

QuickStart

import { NosClient } from '@xgheaven/nos-node-sdk'

const client = new NosClient({
  accessKey: 'your-access-key',
  accessSecret: 'your-access-secret',
  endpoint: 'http://nos-eastchina1.126.net', // endpoint,不同地域不同
  defaultBucket: 'nos-test', // 默认的 Bucket,如果不设置,那么需要在单独的每次请求中进行设置
})

client.putObject({
  objectKey: 'test-file.txt',
  body: Buffer.from('test'), // 支持 Buffer/Readable/string
}).then(() => {
  return client.getObject({
    objectKey: 'test-file.txt',
    encode: 'utf-8', // 支持 'buffer' | 编码 | 'stream'
  })
}).then(content => {
  console.log(content)
})

client.listObject({
  limit: 10
}).then(ret => {
  console.log(ret)
  // 所有的 List 操作接口返回的数据都是类似的,比如 listObject, listBucket, listParts, listMultipart
  // ret 包括 items(元素),limit(请求的数量),nextMarker(下一个标记)
  // 通过 limit 和 nextMarker 的配合,可以实现分页的效果
})

更多信息,请查看 API 文档(Typedoc generated).

TODO

  • [ ] HTTPS Endpoint 支持
  • [x] 文档支持
  • [ ] 增加测试用例
  • [x] 国际化翻译 觉得也没歪果仁会用

Coverage

----------------------|----------|----------|----------|----------|-------------------|
File                  |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |
----------------------|----------|----------|----------|----------|-------------------|
All files             |    94.68 |     83.7 |    93.02 |    95.78 |                   |
 src                  |       98 |    94.12 |      100 |       98 |                   |
  client.ts           |       98 |    94.12 |      100 |       98 |               143 |
 src/exts             |    94.34 |    77.32 |    97.14 |     94.3 |                   |
  auth.ts             |      100 |      100 |      100 |      100 |                   |
  bucket.ts           |    96.23 |    85.71 |      100 |    96.15 |             62,85 |
  multipart-upload.ts |    93.64 |    77.78 |    92.86 |    93.64 |... 74,276,277,278 |
  object.ts           |    93.18 |       72 |      100 |     93.1 |... 82,233,234,236 |
 src/lib              |    94.01 |    87.76 |     88.1 |     97.4 |                   |
  authorization.ts    |      100 |    83.33 |      100 |      100 |                29 |
  constant.ts         |      100 |      100 |      100 |      100 |                   |
  error.ts            |      100 |       80 |      100 |      100 |                 3 |
  request.ts          |      100 |      100 |      100 |      100 |                   |
  resource.ts         |    94.12 |    81.25 |      100 |      100 |          14,48,67 |
  util.ts             |    91.67 |    95.45 |    83.33 |    95.29 |      36,37,38,130 |
 src/type             |      100 |      100 |      100 |      100 |                   |
  bucket.ts           |      100 |      100 |      100 |      100 |                   |
----------------------|----------|----------|----------|----------|-------------------|

Thanks

项目还比较年轻,如果有任何考虑不周的地方欢迎大家进行反馈,我也会积极处理。 争取有一天能够替代原先的 SDK,减轻大家使用上的烦恼。

CHANGELOG

虽然不认为很多人都知道 NOS,哈哈哈

Readme

Keywords

Package Sidebar

Install

npm i @nos-sdk/nos-node-sdk

Weekly Downloads

5

Version

0.2.6

License

MIT

Unpacked Size

111 kB

Total Files

57

Last publish

Collaborators

  • nos-sdk