Как создать RESTful API для MySQL в Go? - PullRequest
0 голосов
/ 08 июня 2018

У меня есть задача вставить полезную нагрузку JSON в таблицу.

(фиксированная) структура таблицы SQL определяется следующим образом:

$ echo "describe ut_invitation_api_data\G;" | mysql -h auroradb.dev.unee-t.com -P 3306 -u bugzilla --password=$(aws --profile uneet-dev ssm get-parameters --names MYSQL_PASSWORD --with-decryption --query Parameters[0].Value --output text) bugzilla  | grep Field
mysql: [Warning] Using a password on the command line interface can be insecure.
  Field: id
  Field: mefe_invitation_id
  Field: bzfe_invitor_user_id
  Field: bz_user_id
  Field: user_role_type_id
  Field: is_occupant
  Field: bz_case_id
  Field: bz_unit_id
  Field: invitation_type
  Field: is_mefe_only_user
  Field: user_more
  Field: mefe_invitor_user_id
  Field: processed_datetime
  Field: script
  Field: api_post_datetime

См. fields.txt для деталей, показывающих различные типы и могут ли они быть нулевыми или нет.

Итак, мой первый шаг - создать структуру и отобразить varchar в строку, любой тип int в int и даты во времени.Time.

Уже имена столбцов с подчеркиванием заставляют моего редактора Golang жаловаться.Далее идут теги JSON, и у нас есть что-то вроде:

type invitation struct {
    id                   int       `json:"id"`
    mefe_invitation_id   string    `json:"mefe___invitation___id"`
    bzfe_invitor_user_id int       `json:"bzfe___invitor___user___id"`
    bz_user_id           int       `json:"bz___user___id"`
    user_role_type_id    int       `json:"user___role___type___id"`
    is_occupant          bool      `json:"is___occupant"`
    bz_case_id           int       `json:"bz___case___id"`
    bz_unit_id           int       `json:"bz___unit___id"`
    invitation_type      string    `json:"invitation___type"`
    is_mefe_only_user    bool      `json:"is___mefe___only___user"`
    user_more            string    `json:"user___more"`
    mefe_invitor_user_id int       `json:"mefe___invitor___user___id"`
    processed_datetime   time.Time `json:"processed___datetime"`
    script               string    `json:"script"`
    api_post_datetime    time.Time `json:"api___post___datetime"`
}

Что выглядит очень неправильно.Есть ли лучший подход к созданию RESTful API для базы данных mysql с использованием Golang?т.е. обеспечить правильное отображение и правильные глаголы RESTful?

1 Ответ

0 голосов
/ 08 июня 2018

Имена полей mysql должны быть в теге json.Имена полей в вашей структуре могут быть любыми.Например:

type Invitation struct {
    ID                int    `json:"id"`
    InvitationID      string `json:"mefe_invitation_id"`
    InvitorUserID     int    `json:"bzfe_invitor_user_id"`
    BzUserID          int    `json:"bz_user_id"`
    //...
}

Также обратите внимание, что для того, чтобы пакет json мог видеть ваши поля структуры, их необходимо экспортировать (начните с заглавных букв), и вы, вероятно, захотите экспортировать всю структурутак что вы можете вернуть его в публичные функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...