项目作者: barrettotte

项目描述 :
A Spring Boot API to easily expose IBMi information. Currently has endpoints to return lists for libraries, files, and members.
高级语言: Java
项目地址: git://github.com/barrettotte/IBMi-SpringBoot-API.git
创建时间: 2019-04-26T13:36:15Z
项目社区:https://github.com/barrettotte/IBMi-SpringBoot-API

开源协议:

下载


IBMi-SpringBoot-API

A Spring Boot API to easily expose IBMi information. Currently, has endpoints to return lists for libraries, files, and members.

Dependencies

  • IBMi running V7R3
  • Java 8
  • JTOpen 9.8
  • JUnit 5.4.2
  • Spring Boot 2.1.4
    • Actuator
    • DevTools
    • Web
  • Swagger 2 (/swagger-ui.html#/)

Endpoints

Endpoint Description
/actuator Actuator
/v2/api-docs Swagger 2 API Docs
/api/v1 Base core API (Does nothing)

endpoints

Examples

curl http://127.0.0.1:8044/api/v1/qsys/catalogs/db/schemas/bolib/tables

  1. [
  2. {
  3. "table_name": "QCLLESRC",
  4. "table_type": "BASE TABLE"
  5. },
  6. {
  7. "table_name": "QDDSSRC",
  8. "table_type": "BASE TABLE"
  9. },
  10. {
  11. "table_name": "QRPGLESRC",
  12. "table_type": "BASE TABLE"
  13. },
  14. {
  15. "table_name": "QRPGSRC",
  16. "table_type": "BASE TABLE"
  17. }
  18. ]

curl http://127.0.0.1:8044/api/v1/qsys/catalogs/db/schemas/bolib/tables/qrpglesrc/partitions

  1. [
  2. {
  3. "data_size": 1,
  4. "partition_text": "Fizzbuzz in RPGLE Free",
  5. "partition_number": 10,
  6. "create_timestamp": "2019-04-02 11:42:18.0",
  7. "last_save_timestamp": "2019-05-18 03:41:46.0",
  8. "number_rows": 16,
  9. "number_row_pages": 1,
  10. "source_type": "RPGLE",
  11. "system_table_member": "FIZZBUZZ "
  12. },
  13. // ...
  14. ]

curl http://127.0.0.1:8044/api/v1/qsys/catalogs/db/schemas/bolib/tables/qrpglesrc/partitions/fizzbuzz

  1. [
  2. {
  3. "srcdat": 190402,
  4. "srcseq": 1,
  5. "srcdta": " /free "
  6. },
  7. {
  8. "srcdat": 190402,
  9. "srcseq": 2,
  10. "srcdta": " // The classic fizzbuzz program in RPGLE Free "
  11. },
  12. {
  13. "srcdat": 190402,
  14. "srcseq": 3,
  15. "srcdta": " dcl-s num int(10); "
  16. },
  17. {
  18. "srcdat": 190402,
  19. "srcseq": 4,
  20. "srcdta": " "
  21. },
  22. {
  23. "srcdat": 190402,
  24. "srcseq": 5,
  25. "srcdta": " for num = 1 to 100; "
  26. },
  27. {
  28. "srcdat": 190403,
  29. "srcseq": 6,
  30. "srcdta": " if %REM(num:3) = 0 and %REM(num:5) = 0; "
  31. },
  32. {
  33. "srcdat": 190402,
  34. "srcseq": 7,
  35. "srcdta": " dsply ('num - ' + %char(num) + ' FIZZBUZZ'); "
  36. },
  37. {
  38. "srcdat": 190402,
  39. "srcseq": 8,
  40. "srcdta": " elseif %rem(num:3) = 0; "
  41. },
  42. {
  43. "srcdat": 190402,
  44. "srcseq": 9,
  45. "srcdta": " dsply ('num - ' + %char(num) + ' FIZZ'); "
  46. },
  47. {
  48. "srcdat": 190402,
  49. "srcseq": 10,
  50. "srcdta": " elseif %rem(num:5) = 0; "
  51. },
  52. {
  53. "srcdat": 190402,
  54. "srcseq": 11,
  55. "srcdta": " dsply ('num - ' + %char(num) + ' BUZZ'); "
  56. },
  57. {
  58. "srcdat": 190402,
  59. "srcseq": 12,
  60. "srcdta": " else; "
  61. },
  62. {
  63. "srcdat": 190402,
  64. "srcseq": 13,
  65. "srcdta": " dsply ('num - ' + %char(num)); "
  66. },
  67. {
  68. "srcdat": 190402,
  69. "srcseq": 14,
  70. "srcdta": " endif; "
  71. },
  72. {
  73. "srcdat": 190402,
  74. "srcseq": 15,
  75. "srcdta": " endfor; "
  76. },
  77. {
  78. "srcdat": 190402,
  79. "srcseq": 16,
  80. "srcdta": " *INLR = *ON; "
  81. }
  82. ]

Configuration

  1. # application.properties template
  2. info.app.name = IBMi API Service
  3. server.port = 8044
  4. db.datasource.as400.username = ?
  5. db.datasource.as400.password = ?
  6. db.datasource.as400.url = jdbc:as400://?/;prompt=false;naming=system;*LIBL
  7. db.datasource.as400.driver-class-name = com.ibm.as400.access.AS400JDBCDriver

Future Goals

  • Sending IBMi credentials in HTTP body
  • More information returned in each endpoint
  • Endpoints for qsys/catalogs/{catalog}/users and qsys/catalogs/{catalog}/users/{user}
  • Endpoint for base IFS /api/v1/ifs
  • Endpoint for viewing message queues (QSYSOPR)
  • Endpoint for viewing printer queues (QPRINT)

Development

  • Build gradlew build or dev/gradle-scripts/gradle-build.bat
  • Test gradlew test or dev/gradle-scripts/gradle-test.bat
  • Run gradlew bootRun or dev/gradle-scripts/gradle-run.bat at http://127.0.0.1:8080
  • Refresh Dependencies gradlew build --refresh-dependencies or dev/gradle-scripts/gradle-refresh.bat

Visual Studio Code

  • Gradle Tasks .vscode/tasks.json
    • [‘gradlew build’, ‘gradlew test’, ‘gradlew bootRun’]
    • [‘gradlew clean build’, ‘gradlew clean test’, ‘gradlew dep-refresh’]
  • HTTP Testing dev/test.http
  • Extensions
    • Gradle Language Support - Naco Siren
    • Java Extension Pack - Microsoft
    • REST Client - Huachao Mao
    • Spring Boot Extension Pack - Pivotal
    • Spring Boot Tools - Pivotal

References