2016-11-23 5 views
0
私はPlaceOrderのAPIで問題に直面しています https://github.com/softlayer/softlayer-go

SOFTLAYER GO LANGライブラリ:ボリューム

リンクから耐久ボリュームを注文するSOFTLAYER GO APIクライアントライブラリを使用しています

の注文を置くことで問題は

エラーメッセージを見つけてください。以下:

2016年11月22日23時54分51秒[DEBUG]パス:https://api.softlayer.com/rest/v3/SoftLayer_Product_Order/verifyOrder.json 2016年11月22日23時54分51秒[DEBUG]パラメータ:{ "パラメータ":[{ "複雑型":」 SoftLayer_Container_Product_Order "}]} 2016/11/22 23:54:51 [DEBUG]レスポンス:{" error ":"プロパティ 'Com "、" code ":" SoftLayer_Exception_Public "} SoftLayer_Exception_Public:プロパティ 'ComplexType'は 'SoftLayer_Container_Product_Order'には有効ではありません。 (HTTP 500)

私は正しい値でComplexTypeプロパティを指定しました。

+0

あなたのGOコードを投稿、コードなしであなたを助けるためにIMPOSIBLEです。現在、デバッグログを見ると、RESTFul呼び出しを使用しても同じエラーが発生しても間違った "ComplexType"プロパティしか送信されていないようです。 –

答えて

0

まあ、私はあなたのコードについての考えを持っていないが、私はverifyOrderは、コードは非常に単純ではない場合、私はとても残念、GOと新しいです

package main 

import (
    "fmt" 
    //"log" 

    "github.com/softlayer/softlayer-go/datatypes" 
    "github.com/softlayer/softlayer-go/services" 
    "github.com/softlayer/softlayer-go/session" 
    "github.com/softlayer/softlayer-go/sl" 
) 

func main() { 
    sess := session.New() // See above for details about creating a new session 

    // Get the Virtual_Guest service 
    service := services.GetProductOrderService(sess) 

    // Create a Virtual_Guest struct as a template 
    vOrderTemplate := datatypes.Container_Product_Order_Network_Storage_Enterprise{} 
    vOrderTemplate.Location = sl.String("154820") 
    vOrderTemplate.Quantity = sl.Int(1) 
    vOrderTemplate.PackageId = sl.Int(240) 


    price1 := datatypes.Product_Item_Price{} 
    price1.Id = sl.Int(45058) 

    price2 := datatypes.Product_Item_Price{} 
    price2.Id = sl.Int(45098) 

    price3 := datatypes.Product_Item_Price{} 
    price3.Id = sl.Int(45068) 

    price4 := datatypes.Product_Item_Price{} 
    price4.Id = sl.Int(45118) 

    price5 := datatypes.Product_Item_Price{} 
    price5.Id = sl.Int(46120) 

    prices := []datatypes.Product_Item_Price{price1,price2,price3,price4,price5} 


    vOrderTemplate.Prices = prices 

    vOrderTemplate.OsFormatType = &datatypes.Network_Storage_Iscsi_OS_Type{ 
            Id: sl.Int(12), 
            KeyName: sl.String("LINUX"), 
           } 


    vOrd, err := service.VerifyOrder(&vOrderTemplate) 


    if err != nil { 
     fmt.Printf("%s\n", err) 
     return 
    } else { 
     fmt.Printf("\norder verified with Total Recurring Tax %d\n", *vOrd.TotalRecurringTax) 
    } 

} 

耐久ボリュームを注文する働き作ることができた:Pまた、私は応答のすべてのプロパティを印刷する方法を知らなかったので、1つのプロパティしか印刷しませんでした。あなたがGOのエキスパートかもしれないので、コードを改善できると確信しています。

ご注文の際に正しい価格が使用されていることをご確認ください。

ゴーでの私のコードは基本的にこのようなRESTfulな呼び出しのように同じである:

{ 
    "parameters": [ 
    { 
     "location": 154820, //Dallas 06 
     "packageId": 240, 
     "osFormatType": { 
     "id": 12, 
     "keyName": "LINUX" 
     }, 
     "complexType": "SoftLayer_Container_Product_Order_Network_Storage_Enterprise", 
     "prices": [ 
     { 
      "id": 45058 # Endurance Storage 
     }, 
     { 
      "id": 45098 # Block Storage 
     }, 
     { 
      "id": 45068 # 0.25 IOPS per GB 
     }, 
     { 
      "id": 45118 # 20 GB Storage Space 
     }, 
     { 
      "id": 46120 # 5 GB Storage Space - Snapshot 
     } 
     ], 
     "quantity": 1 
    } 
    ] 
} 

よろしく

関連する問題